MySQL连接:在使用“MySQL连接”时显示表中的所有行;其中;条款

MySQL连接:在使用“MySQL连接”时显示表中的所有行;其中;条款,mysql,join,Mysql,Join,我有以下表格: 插槽=id,时间 子项=id、父项id、名称、表单 家长=id、姓名、联系方式\u详细信息 教师=id、姓名、科目 约会=id、子id、插槽 我正在使用以下代码显示可预订约会时间的列表: SELECT s.id, DATE_FORMAT( s.time, '%l:%i' ) AS TIME, p.name FROM slots AS s LEFT JOIN appointments AS a ON a.slot = s.id LEFT JOIN child AS c ON a.

我有以下表格:

插槽
=id,时间

子项
=id、父项id、名称、表单

家长
=id、姓名、联系方式\u详细信息

教师
=id、姓名、科目

约会
=id、子id、插槽

我正在使用以下代码显示可预订约会时间的列表:

SELECT s.id, DATE_FORMAT( s.time,  '%l:%i' ) AS TIME, p.name
FROM slots AS s
LEFT JOIN appointments AS a ON a.slot = s.id
LEFT JOIN child AS c ON a.child_id = c.id
LEFT JOIN parent AS p ON c.parent_id = p.id
这将显示我所有约会时段的列表,以及一些带有家长姓名的时段

我想做的是,对于一个特定的教师,显示所有预约时间的列表,如果一些预约时间已满,我想显示预约该时间的孩子的家长的姓名

比如说,

布鲁姆菲尔德小姐的约会:

id  TIME    name
1   4:00    Parent One
2   4:05    NULL
3   4:10    Parent Two
4   4:15    NULL
5   4:20    NULL
6   4:25    NULL
7   4:30    NULL
SQL result

Host: localhost
Generation Time: Mar 05, 2012 at 11:43 AM
Generated by: phpMyAdmin 3.4.9 / MySQL 5.5.20
SQL query: SELECT * FROM `slots` LIMIT 0, 30 ; 
Rows: 30

id  time
1   2012-03-15 16:00:00
2   2012-03-15 16:05:00
3   2012-03-15 16:10:00
4   2012-03-15 16:15:00
5   2012-03-15 16:20:00
6   2012-03-15 16:25:00
7   2012-03-15 16:30:00
8   2012-03-15 16:35:00
9   2012-03-15 16:40:00
10  2012-03-15 16:45:00
11  2012-03-15 16:50:00
12  2012-03-15 16:55:00
13  2012-03-15 17:00:00
14  2012-03-15 17:05:00
15  2012-03-15 17:10:00
16  2012-03-15 17:15:00
17  2012-03-15 17:20:00
18  2012-03-15 17:25:00
19  2012-03-15 17:50:00
20  2012-03-15 17:55:00
这可能吗?我尝试使用WHERE子句,但它只是显示预订的约会,而不是可用时间的完整列表

因此我意识到我相当肯定我的连接完全错了


更新:插槽表如下所示:

id  TIME    name
1   4:00    Parent One
2   4:05    NULL
3   4:10    Parent Two
4   4:15    NULL
5   4:20    NULL
6   4:25    NULL
7   4:30    NULL
SQL result

Host: localhost
Generation Time: Mar 05, 2012 at 11:43 AM
Generated by: phpMyAdmin 3.4.9 / MySQL 5.5.20
SQL query: SELECT * FROM `slots` LIMIT 0, 30 ; 
Rows: 30

id  time
1   2012-03-15 16:00:00
2   2012-03-15 16:05:00
3   2012-03-15 16:10:00
4   2012-03-15 16:15:00
5   2012-03-15 16:20:00
6   2012-03-15 16:25:00
7   2012-03-15 16:30:00
8   2012-03-15 16:35:00
9   2012-03-15 16:40:00
10  2012-03-15 16:45:00
11  2012-03-15 16:50:00
12  2012-03-15 16:55:00
13  2012-03-15 17:00:00
14  2012-03-15 17:05:00
15  2012-03-15 17:10:00
16  2012-03-15 17:15:00
17  2012-03-15 17:20:00
18  2012-03-15 17:25:00
19  2012-03-15 17:50:00
20  2012-03-15 17:55:00


提前感谢,

IRC的一位朋友的回答似乎成功了:

SELECT s.id, DATE_FORMAT( s.time,  '%l:%i' ) AS time, p.name
FROM slots AS s
LEFT JOIN appointments AS a ON a.slot = s.id
AND teacher_id =$teacher
LEFT JOIN child AS c ON a.child_id = c.id
LEFT JOIN parent AS p ON c.parent_id = p.id

行是最重要的一行

或者您可以将以下内容放在


WHERE appointment.teacher\u id=$teacher或appointment.teacher\u id为空

能否显示您尝试过的查询?看起来应该行了,“约会”表中有什么?另外,在约会、孩子和父母之间使用外部联接是否有原因?