mysql查询交叉multipul表条件可能为null

时间:2017-07-17 02:55:34

标签: mysql

我有三个表, PERSON TYPE PROJECT ,如下所示 PERSON 包含4列:

ID, NAME, TYPE_ID, PROJECT_IDPROJECT_ID默认值为NULL。

TYPE 包含2列:

ID, NAME

PROJECT 包含2列:

ID, NAME

PERSON 表中的第一条记录是

| ID | NAME | TYPE_ID | PROJECT_ID |
+----+------+---------+------------+
| 1  | Ryan | 1       | NULL       |

现在我希望得到结果为person.id,person.name,type.name,project.name as

1,Ryan,输入名称,“空”以下查询。

select person.*,type.name,project.name from person left join (type , project) ON (type.id = person.type AND project.id = person.project) where person.`id`= 1


我无法得到类型和项目的正确结果。

1 个答案:

答案 0 :(得分:1)

我认为这就是你要做的事情

SELECT 
      a.ID, 
      a.NAME, 
      b.NAME, 
      c.NAME 
FROM 
      PERSON a LEFT JOIN TYPE b ON (b.ID = a.TYPE_ID)
      LEFT JOIN PROJECT c ON (c.ID = a.PROJECT_ID)

我不确定它在Mysql中是如何工作的,但我认为它应该与Oracle

几乎相同