这一定比我做的容易,但我在这里疯了。 我想要做的是从三个表创建一个视图,如:
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的空值 - 我不想这样做 - 或者我得到了一些奇怪的变化,包括tableB中来自tableB的categoryParentID的每一行 - 这给了我超过3,000,000行,并且也是不正确的。
如果不清楚,我可以解释一下。
提前致谢。
答案 0 :(得分: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
;
(见the "left outer join" section of the Wikipedia article on SQL joins。)