将行名称与sql中的一个单元格进行比较
我有两张桌子。一个表具有id、日期、菜单1、菜单2、菜单3,另一个表具有id、id\u日期、编号、菜单号 在第二个表中,有关于在特定日期订购菜单的用户的数据。例如:ID:1 ID\u日期:2014-09-09编号:4000菜单\u编号:菜单1。有了这些信息,我想给出第一张表上的数字,日期和这个日期的菜单将行名称与sql中的一个单元格进行比较,sql,select,Sql,Select,我有两张桌子。一个表具有id、日期、菜单1、菜单2、菜单3,另一个表具有id、id\u日期、编号、菜单号 在第二个表中,有关于在特定日期订购菜单的用户的数据。例如:ID:1 ID\u日期:2014-09-09编号:4000菜单\u编号:菜单1。有了这些信息,我想给出第一张表上的数字,日期和这个日期的菜单 SELECT DISTINCT B.ID, B.ID_Date, B.Menu, S.date FROM ordering B, menu_plan S WHERE
SELECT DISTINCT
B.ID, B.ID_Date, B.Menu, S.date
FROM
ordering B, menu_plan S
WHERE
B.ID_Date = S.Date
AND B.Number = '4000859'
这个SQL语句只提供特定日期的菜单号。但是我想从表1中得到这一天菜单上的内容。它是如何工作的?或者我应该用另一种方式,在第二个表格中,而不是在菜单号中写完整的菜单?-在ANSI-92 SQL标准(20多年前)中,旧样式的逗号分隔的表格列表样式被正确的ANSI
JOIN
语法所取代,因此不鼓励使用它。谢谢你的提示!谢谢它可以工作,但只有一件事,没有行名“Menu”,它可以工作:B.ID\u日期,CASE S.Menu\u编号当“Menu1”。。。结束,S.date
。但是我怎样才能得到像菜单一样的行名呢?使用Menu=CASE…
它不起作用。感谢CASE语句的提示。但它只能这样工作:选择B.ID,CASE。。。当“菜单1”出现时。。。结束为菜单,S.date
选择不同的S.ID,B.ID_日期,菜单=案例B.Menu编号当'Menu1'时,然后S.Menu1当'Menu2'时,然后S.Menu2当'Menu3'时,然后S.Menu3其他'Unknown'结束,S.date从B加入菜单订购B.ID_日期=S.date其中B。[Number]=“4000859”我想您的查询中的别名[s]&[b]有问题。谢谢您接受我的回答!
SELECT DISTINCT
B.ID, B.ID_Date,
Menu =
CASE S.menu_number
WHEN 'Menu1' THEN B.menu1
WHEN 'Menu2' THEN B.menu2
WHEN 'Menu3' THEN B.menu3
ELSE 'Unknown'
END,
S.date
FROM
ordering B
JOIN menu_plan S ON B.ID_Date = S.Date
WHERE
B.Number = '4000859'