我有以下表格:
餐馆:
Restaurant_ID | Restaurant_Name | Phone_1
菜单:
Item_ID | Rest_ID | Item_Name | Item_price
我想要输出:
Restaurant_ID| Item_Name | Item_price
我尝试了这个查询:
SELECT r.Restaurant_ID,
m.Item_Name,
m.Item_price
FROM restaurants r, menu m
WHERE r.Restaurant_ID = (SELECT `Rest_ID` FROM menu WHERE Item_ID=1) LIMIT 0,1;
但此查询的输出是两个表中的所有行。 实际上我并不想显示所有行,这就是为什么我使用LIMIT但我没有得到欲望输出。
答案 0 :(得分:2)
试试这个:
SELECT r.Restaurant_ID, m.Item_Name, m.Item_price
FROM restaurants r
LEFT JOIN menu m ON r.Restaurant_ID=m.Rest_ID
WHERE Item_ID=1
答案 1 :(得分:0)
这将为您提供所需的结果
SELECT r.Restaurant_ID,
m.Item_Name,
m.Item_price
FROM restaurants r
JOIN ( SELECT Item_ID, Rest_ID, Item_Name, Item_price
FROM Menu
GROUP BY Item_ID, Rest_ID, Item_Name, Item_price) m
ON r.Restaurant_ID = m.Rest_ID
WHERE m.Item_Id = 1
答案 2 :(得分:0)
我认为您在原始查询中需要更改的是您加入表格的方式:FROM menu m LEFT JOIN restaurants r ON ...
。现在你的查询并没有把这两个表联系起来。
SELECT r.Restaurant_ID,m.Item_Name,m.Item_price
FROM menu m
LEFT JOIN restaurants r ON m.Rest_ID = r.Restaurant_ID
WHERE r.Restaurant_ID=(SELECT `Rest_ID` FROM menu WHERE Item_ID=1)