我正在尝试查询“parts”表的所有行,即使它们的编号是无。这给了我一个问题,因为当订购的数字不在“order_line”表上时,它不会将项目显示为没有(这实际上是分配中此问题的原因)
这是我的sql,用于找到所有订购号码的零件:
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 :(得分:3)
使用'left outer join'代替order_line表的'inner join'
编辑:正如Martin指出的那样,你需要将'内部联接'替换为'左外部联接'答案 1 :(得分:0)
如您所见,当您指定INNER JOIN时,意味着对于要在结果集中的行,它必须由JOIN 左侧的现有行和右侧现有的一行。
但INNER JOIN不是JOIN表的唯一方法。您还可以使用LEFT或RIGHT OUTER JOIN,它只需要两个表中的一个表中有一行(来自JOIN另一侧的值在结果集中都是NULL)。甚至还有一个FULL OUTER JOIN,需要来自双方 的一行。
在文档中查找OUTER JOIN以获取更多信息。