这是我的表格结构: tables_structure
并且有tbl_owner
,tbl_rooms
和tbl_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';
然而,它没有用。请帮帮我?
答案 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和所有未知所有者