需求场景:
数据库中两张表,字段如下图所示。 需求内容:使用Sql语句,在一个结果集中展示出CreateBy和UpdateBy的用户名:
ProductTable表,字段如下图所示:
UserTable表,字段如下图所示:
代码展示如下:
select a.ID, a.Name, a.Version, b.UserName as CreateByName, c.UserName as updatebyname from ProductTable a left join UserTable b on a.CreateBy = b.ID left join UserTable c on a.UpdateBy = c.ID
查询结果展示如下:
备注:left join 的好处是,若create_by或update_by字段没有值的话,也能查询出product记录
除了SQL语句,在使用程序链接时我们经常用到LINQ语句,在LINQ语句下,相同的效果实现需要如下代码:
TestDbEntities dataContext = new TestDbEntities();
var Users = dataContext.UserTable;
var Products = dataContext.ProductTable;
var query = from product in Products
join user1 in Users
on product.CreateBy equals user1.ID
join user2 in Users
on product.UpdateBy equals user2.ID
select new
{
product.ID,
product.Name,
product.Version,
CreateByName=user1.UserName,
UpdateByName=user2.UserName
};