【问题标题】:Select one table column with distinct record with other table all data选择一个表列与其他表的所有数据具有不同的记录
【发布时间】:2018-01-07 20:18:21
【问题描述】:

我有 2 个表 'userfoodcategory' 和 'MenuMaster'。

'userfoodcategory' 有 foodcategory 和 'MenuMaster' 有多个项目以及这个类别和一个列 'isnonveg'。

我想用 1 个附加列“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 的新手。 提前致谢。

【问题讨论】:

  • 您能否添加一个您期望从查询中获得的数据和输出示例?您是否尝试过使用“and MM.isnonveg IS NULL”作为连接条件(放在“ON MM.categoryid = ufc.foodcategoryid”之后)而不是“where”?
  • 感谢@JulienR,我只想在第二个屏幕截图中显示“isnonveg”列,并在第一个屏幕截图中显示数据。表示第一个屏幕截图数据,我需要添加列“isnonveg”,该列在“MenuMaster”表中。
  • 抱歉,由于工作场所的限制,无法访问屏幕截图
  • 好吧,既然你有很多不同的行,每个类别都是MenuMaster,并且这一行的每一行在IsNonVeg 表中可能有0或1,所以很自然有每个 Cateroty 的多个值。如果两个选项都存在,您希望在 select 语句中返回什么值?
  • @ZoharPeled,没有每个类别 isnonveg 将只有 0 或 1。MenuMaster 中的 1 个类别不是两者。

标签: sql linq sql-server-2012 sql-server-2008-r2 sql-to-linq-conversion


【解决方案1】:

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

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

【讨论】:

  • 感谢@Sujith,它现在可以工作了,我只需要再添加 1 个条件“和 MM.isnonveg =0”。现在我想在 Linq 中使用它。
  • @AnandSystematix WC。如果解决了您的问题,请标记为答案。
  • 将其标记为答案,还有 1 件事,我在 Linq 语句中需要这个,你能帮忙吗?
  • @AnandSystematix 对不起,我对 LINQ 不是很好。我需要花一些时间将其修改为 LINQ。你可以试试linqpad.net。它会为您提供来自 SQL 的 LINQ 中所需的查询
  • 我只是尝试将它构建到 LINQ 中。尝试使用这个: FROM m in ( FROM menu in MenuMaster select new { categoryid = menu.categoryid, isnonveg = menu.isnonveg }) .Distinct() ) join ufc in userfoodcategory.DefaultIfEmpty() on m.categoryid = ufc.foodcategoryid where ufc.USERID = 19 选择新 { ufc, m.isnonveg }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多