左联接与内部联接结合不返回左表中的所有行

时间:2019-08-29 01:57:49

标签: mysql

我有一个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行。

3 个答案:

答案 0 :(得分:1)

混合使用内部联接和左联接时,结果不是左联接。
另外,由于您希望表parts的所有行都设为 left 表:

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的联接中。

答案 1 :(得分:0)

尝试从零件表开始,然后从那里开始连接。没有任何数据,这是最佳尝试:

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

答案 2 :(得分:0)

您是内部包含零件的零件,这些零件将仅使用公共数据,因此减少了行数。也尝试左联接。

相关问题