【发布时间】:2012-03-05 19:54:07
【问题描述】:
我有以下表格:
slots = id,时间
child = id, parent_id, name, form
parent = id, name, contact_details
teacher = id、姓名、主题
appointments = id, child_id, slot
我正在使用以下代码显示可预订的预约时间列表:
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
这可能吗?我尝试使用 WHERE 子句,但它只是显示已预订的约会,而不是可用时间的完整列表。
因此我意识到我相当确定我的 JOIN 完全错误!
更新:槽表如下所示:
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
提前致谢,
【问题讨论】:
-
你能显示你尝试过的查询吗?看起来它应该可以工作 - “约会”表中有什么?另外,您在约会、孩子和父母之间使用外部联接是否有原因?