如何使用LEFT JOIN从表中获取值?

时间:2016-12-11 11:23:15

标签: mysql

这是我的表格结构: tables_structure

并且有tbl_ownertbl_roomstbl_class

如何从id_class获取tbl_class和班级名称。

原始源代码如下:

SELECT
  clas.id_class,
  clas.class_name
FROM
  tbl_rooms AS room
LEFT JOIN tbl_class AS clas ON room.id_class = clas.id_class
LEFT JOIN tbl_owner AS own ON room.id_owner = own.id_owner
WHERE own.id_owner='1';

然而,它没有用。请帮帮我?

1 个答案:

答案 0 :(得分:0)

   SELECT
    clas.id_class,
    clas.class_name
FROM
    tbl_rooms AS room
    LEFT JOIN tbl_class AS clas ON room.id_class = clas.id_class
    LEFT JOIN tbl_owner AS own ON room.id_owner = own.id_owner
WHERE own.id_owner='1';

Left Join s和wheres可能有点令人困惑。

在这里,你要求所有的房间,如果他们有一个课程返回它,他们有一个所有者返回它。这是由left join完成的。

然后在获得该信息后,您要求按owner = 1

过滤结果

鉴于有left join用于构建此数据,您现在只说显示两个连接匹配的结果。有效地将left join转为inner join

我会删除where子句并检查连接条件是否首先产生结果,然后开始允许缩小结果集的位置。

检查左连接是否为条件的正确方法是(own.id_owner='1') OR (own.id_owner is null)

这将带回所有拥有者= 1和所有未知所有者