0

这一定比我做的要容易,但我在这里要疯了。我想要做的是从三个表中创建一个视图,如下所示:

SELECT tableA.name, tableB.id, tableB.categoryID, tableC.categoryParentID
FROM tableB, tableA where tableA.id=tableB.id JOIN tableC on
tableC.categoryID = tableB.categoryID;

很简单。但是,我想要完成的是,在 tableB.categoryID 为 NULL 的情况下,我希望 tableC.categoryParentID 显示为 NULL 值而不是 categoryParentID 值。

到目前为止,我的结果可以让表格显示 tableB.categoryID 不为 NULL 的所有行,并完全排除 categoryID 具有空值的行 - 我不想这样做 - 或者我得到一些奇怪的变化包括 tableC 中 categoryParentID 的每一行和 tableB 中的每一行 - 这给了我超过 3,000,000 行,也是不正确的。

如果不清楚,我可以解释更多。

提前致谢。

4

1 回答 1

1

如果我对您的理解正确,那么您想要的是:

SELECT tableA.name,
       tableB.id,
       tableB.categoryID,
       tableC.categoryParentID
  FROM tableA
  JOIN tableB
    ON tableB.id = tableA.id
  LEFT
 OUTER
  JOIN tableC
    ON tableC.categoryID = tableB.categoryID
;

(参见关于 SQL 连接的维基百科文章的“左外连接”部分。)

于 2012-09-04T00:02:27.167 回答