2011-11-02 63 views
0

我试图查询“部件”表的所有行,即使它们的编号是无的。这是给我一个问题,因为当订购的号码不在“order_line”表上时,它不显示该项目没有任何项目(这实际上是分配中该问题的原因)用于查询没有值的行的SQL查询

这是我的sql for找到所有与数量的零件下令:

SELECT PART.PART_NUM, 
    PART.DESCRIPTION, 
    PART.ON_HAND, 
    PART.PRICE, 
    ORDERS.ORDER_NUM, 
    ORDER_LINE.NUM_ORDERED 
FROM PART 
INNER JOIN ORDER_LINE 
ON PART.PART_NUM = ORDER_LINE.PART_NUM 
INNER JOIN ORDERS 
ON ORDER_LINE.ORDER_NUM = ORDERS.ORDER_NUM 
ORDER BY PART.PART_NUM 

这是学校,所以如果你能指出我在这将是伟大正确的方向。希望这是有道理的..

+0

您需要使用外部联接。 –

回答

0

正如您所看到的,当您指定INNER JOIN时,这意味着对于行中的结果集,它必须由JOIN 左侧的现有行组成从右侧开始的现有行。

但INNER JOIN不是加入表的唯一方法。您也可以使用LEFT或RIGHT OUTER JOIN,它只需要两个表中的一个在其中有一行(来自JOIN另一侧的值在结果集中都是NULL)。甚至还有一个FULL OUTER JOIN,它需要双方的

在您的文档中查找OUTER JOIN以获取更多信息。

+0

非常感谢。我将研究不同类型的连接,显然缺乏对差异的理解。 – Sackling

3

使用“左外连接”代替“内部联接”为ORDER_LINE表

编辑:正如马丁指出的那样,你需要“与内部联接的”左更换两外连接'

+0

如果这是唯一的更改,则会通过下一次连接将其转换回内连接。 –

+0

thanx Martin - 我错过了 - 修复了我的答案 – Ray