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