[英]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.