[英]Join 4 Tables in SQL with left join and inner join
嘿,我試圖用左聯接和內聯接聯接sql中的4個表。
醫院桌
HospitalID| Name| Province| Email|
訂單表
OrderID| HospitalID| StaffID| DeliverID| Date| Time
項目表
ItemID| Type| Name| Quantity| Expiry_Date
OrderItem表
OrderItemID| OrderID| ItemID| Quantity
我嘗試執行以下SQL查詢,但收到錯誤消息,但我不知道自己在做什么錯。
SELECT Hospital.Name, Item.Type, OrderItem.Quantity
FROM Hospital
LEFT JOIN [Order]
ON Hospital.HospitalID=[Order].HospitalID
INNER JOIN (SELECT Item.Type
FROM Item
GROUP BY Item.Type)
OrderItem ON Item.ItemID = OrderItem.ItemID
;
查詢中幾乎沒有錯誤,使用[Order]
的語法在mysql中無效,然后您需要為內部查詢使用別名。 另外,OrderItem需要首先與Order聯接。 另外,由於您沒有做任何合計的工作來從Item
獲取數據,因此無需使用use子查詢進行Item
。 在mysql中,查詢如下所示。
SELECT
h.Name,
i.Type,
oi.Quantity
FROM Hospital h
LEFT JOIN `Order` o ON o.HospitalID = h.HospitalID
INNER JOIN OrderItem oi on oi.OrderID = o.OrderID
INNER JOIN Item i
on i.ItemID = oi.ItemID ;
請注意, Order
是保留字,因此您需要像上面的查詢中一樣對它進行反打
您可以在下面的簡單查詢中使用-
SELECT
hosp.Name,
itm.Type,
oi.Quantity
FROM Hospital hosp
JOIN `Order` ord ON ord.HospitalID = hosp.HospitalID
JOIN OrderItem oi on oi.OrderID = ord.OrderID
JOIN Item itm on itm.ItemID = oi.ItemID;
如果您有機會即使在其他表格(例如類型,數量等)中都沒有詳細信息的情況下也要顯示所有醫院名稱,則可以使用左連接-
SELECT
hosp.Name,
itm.Type,
oi.Quantity
FROM Hospital hosp
LEFT JOIN `Order` ord ON ord.HospitalID = hosp.HospitalID
LEFT JOIN OrderItem oi on oi.OrderID = ord.OrderID
LEFT JOIN Item itm on itm.ItemID = oi.ItemID;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.