Sql 选择一个具有不同记录的表列,另一个表列包含所有数据

Sql 选择一个具有不同记录的表列,另一个表列包含所有数据,sql,linq,sql-server-2012,sql-server-2008-r2,sql-to-linq-conversion,Sql,Linq,Sql Server 2012,Sql Server 2008 R2,Sql To Linq Conversion,我有两个表“userfoodcategory”和“MenuMaster” “userfoodcategory”具有foodcategory,而“MenuMaster”具有多个项目以及带有列“IsNonLog”的此类别 我想用一个附加列“isnonveg”查询“userfoodcategory”表数据,该列位于“MenuMaster”表中 我尝试下面的查询,但它是给多余的记录 SELECT DISTINCT ufc.*, MM.isnonveg FROM MenuMaster MM LEFT

我有两个表“userfoodcategory”和“MenuMaster”

“userfoodcategory”具有foodcategory,而“MenuMaster”具有多个项目以及带有列“IsNonLog”的此类别

我想用一个附加列“isnonveg”查询“userfoodcategory”表数据,该列位于“MenuMaster”表中

我尝试下面的查询,但它是给多余的记录

 SELECT DISTINCT ufc.*, MM.isnonveg
FROM   MenuMaster MM
LEFT JOIN  userfoodcategory ufc  ON MM.categoryid = ufc.foodcategoryid
WHERE  ufc.USERID = 19 --and MM.isnonveg IS NULL
order by ufc.foodcategoryid
有关更多详细信息,请查看下面的屏幕截图

我还希望将其作为linq查询,但首先我尝试在sql中构建它,然后我需要在linq中转换它,因为我是linq的新手。
提前感谢。

您可以尝试使用以下查询:

SELECT DISTINCT ufc.*, MM.isnonveg
FROM  (select distinct categoryid,isnonveg FROM MenuMaster) MM
LEFT JOIN  userfoodcategory ufc  ON MM.categoryid = ufc.foodcategoryid
WHERE  ufc.USERID = 19 --and MM.isnonveg IS NULL
order by ufc.foodcategoryid

您能添加一个您期望从查询中得到的数据和输出的示例吗?您是否尝试过使用“and MM.isnoveneg IS NULL”作为连接条件(将其放在“ON MM.categoryid=ufc.foodcategoryid”之后),而不是放在“where”中?谢谢@JulienR,我只想在第二个屏幕截图中显示“isnoveneg”列,在第一个屏幕截图中显示数据。意味着对于第一个屏幕截图数据,我需要添加列“isnonveg”,此列位于“MenuMaster”表中。很抱歉,由于我的工作限制,无法访问屏幕截图。因为每个类别都有许多不同的行is
MenuMaster
,这一行中的每一行在
isnonreg
表中可能有0或1,每个Cateroty都有多个值是很自然的。如果两个选项都存在,您希望在select语句中返回什么值?@ZoharPeled,每个类别的值都是“否”,isnonveg将只有0或1。对于MenuMaster中的1个类别,这两个条件都不适用。谢谢@Sujith,它现在可以工作了,我只需要再添加1个条件“并且MM.isnonLog=0”。现在我想把这个放在林肯。如果它解决了您的问题,请将其标记为答案。将其标记为答案,还有一件事,我需要在Linq声明中提供此信息,您能帮忙吗?@anandix抱歉,我对Linq不太了解。我需要花一些时间将其修改为LINQ。你能试试吗。它将在LINQ中提供所需的查询,SQLI刚刚尝试将其构建到LINQ中。尝试使用以下方法:从m in(从MenuMaster中的菜单选择new{categoryid=menu.categoryid,isnoveneg=menu.isnoveneg}).Distinct()在userfoodcategory.DefaultIfEmpty()中加入ufc在m.categoryid=ufc.foodcategoryid上,其中ufc.USERID=19,选择new{ufc,m.isnonveg}