带有条件列的Mysql视图

时间:2012-09-03 23:59:11

标签: mysql join view multiple-tables

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

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行,并且也是不正确的。

如果不清楚,我可以解释一下。

提前致谢。

1 个答案:

答案 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。)