[英]Left joined combined with inner join not returning all the rows from the left table
我有一個 mysql 查詢,其中有 2 個內部聯接和一個左聯接。 我想要左連接表中的所有數據
我的查詢如下所示:
select ordernumber,PartDescription,partNumber
from orders
inner join orderDetail on orders.orderID = orderDetail.orderID
left join parts on orderdetail.partID = parts.partID
inner join inventory on parts.partid = inventory.partid
但是,這個查詢只給了我 5 或 6 行而不是零件表中的 100 行。
當您混合使用內連接和左連接時,結果不是左連接。
此外,由於您希望表parts
所有行都使其成為左表:
select o.ordernumber, p.PartDescription, p.partNumber
from parts p
left join inventory i on p.partid = i.partid
left join orderdetail od on p.partID = od.partID
left join orders o on o.orderID = od.orderID
為表名使用別名,它使代碼更易於閱讀。
還使用表名/別名限定所有列。
盡管我認為不需要它,但我仍保留在連接表inventory
。
嘗試從零件表開始,然后從那里加入。 沒有任何數據,這是最好的嘗試:
select ordernumber, PartDescription, partNumber
from parts
left join orderdetail on parts.partID = orderdetail.partID
inner join orders on orders.orderID = orderDetail.orderID
inner join inventory on parts.partid = inventory.partid
您將內部連接零件與僅采用公共數據的庫存,從而減少行數。 嘗試在那里左加入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.