用于查询没有值的行的SQL

时间:2011-11-02 18:12:50

标签: sql

我正在尝试查询“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

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

2 个答案:

答案 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以获取更多信息。