我有以下結構
COFFEE ORDER_ITEMS ORDERS USERS
------ ----------- ------ -----
id order_id id id
name coffee_id user_id email
訂單和咖啡之間存在多對多的關系。以及用戶和訂單之間的一對多關系。我想知道用戶點了什么咖啡。
我有一個查詢來檢索每個用戶的訂單:
SELECT users.id as USERID, orders.id as ORDERID
FROM users
INNER JOIN orders on users.id = orders.user_id
作為一個例子,這給了我:
userid orderid
1 1
1 2
2 3
4 4
我有一個查詢來檢索屬于訂單的咖啡:
SELECT orders.id, coffees.name
FROM orders, coffees, order_coffees
WHERE coffees.id = order_coffees.coffee_id
AND orders.id = order_coffees.order_id
例如,這給了我:
orderid coffeename
1 Coffee A
1 Coffee B
2 Coffee A
2 Coffee C
我想得到以下資訊:
userid orderid coffeename
1 1 Coffee A
1 1 Coffee B
1 2 Coffee A
2 3 Coffee C
4 4 NULL
uj5u.com熱心網友回復:
您應該從表格開始連接所有 4 個表格,如果您只需要至少訂購過一次咖啡的用戶的結果,則應該users使用連接,或者如果您想要所有用戶的結果,即使是從未下過訂單的用戶也應該使用連接。INNERLEFT
對表使用帶有子句和別名的正確連接,ON以使代碼更具可讀性:
SELECT u.id userid,
o.id orderid,
c.name coffeename
FROM users u
INNER JOIN orders o ON o.user_id = u.id
INNER JOIN order_items oi ON oi.order_id = o.id
INNER JOIN coffees c ON c.id = oi.coffee_id;
uj5u.com熱心網友回復:
資料表
1.主訂單(master_list)
3.訂單詳情(預訂)
3.咖啡餐(商店)
4.用戶資訊(用戶)
SELECT * FROM `booking` as a
inner join `master_list` as b on a.`mas_id`=b.`mas_id`
inner join `shop` as c on a.`shop_id`=c.`shop_id`
inner join `user` as d on b.`user_id`=d.`user_id`
不知道有沒有幫助你試試
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/459473.html
上一篇:加入陣列內的元素
下一篇:選擇所有行值作為串列
