簡體   English   中英

左連接結合內連接不返回左表中的所有行

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM