【发布时间】:2012-09-15 14:59:43
【问题描述】:
我有以下数据库表和列:
students
+------------+-------------------+------------------+
| student_id | student_firstname | student_lastname |
+------------+-------------------+------------------+
| 95 | John | Doe |
+------------+-------------------+------------------+
studentcourseplan
+--------+------------+
| cpl_id | student_id |
+--------+------------+
| 209 | 95 |
| 273 | 95 |
+--------+------------+
studentdates
+------------+-------------------+-----------------+
| student_id | student_startdate | student_enddate |
+------------+-------------------+-----------------+
| 95 | 2012-07-02 | 2012-08-17 |
| 95 | 2012-08-20 | 2012-11-16 |
+------------+-------------------+-----------------+
如果我运行这个查询...
SELECT
scp.cpl_id,
s.student_id,
s.student_firstname,
s.student_lastname,
sd.student_startdate,
sd.student_enddate
FROM
studentcourseplan scp
INNER JOIN
students s ON s.student_id = scp.student_id
INNER JOIN
studentdates sd ON sd.student_id = s.student_id
...我得到以下输出:
+--------+------------+-------------------+------------------+-------------------+-----------------+
| cpl_id | student_id | student_firstname | student_lastname | student_startdate | student_enddate |
+--------+------------+-------------------+------------------+-------------------+-----------------+
| 209 | 95 | John | Doe | 2012-07-02 | 2012-08-17 |
| 273 | 95 | John | Doe | 2012-07-02 | 2012-08-17 |
+--------+------------+-------------------+------------------+-------------------+-----------------+
注意结果中的日期与表studentdates 中的值相比。他们错了。我想要类似以下的输出:
+--------+------------+-------------------+------------------+-------------------+-----------------+
| cpl_id | student_id | student_firstname | student_lastname | student_startdate | student_enddate |
+--------+------------+-------------------+------------------+-------------------+-----------------+
| 209 | 95 | John | Doe | 2012-07-02 | 2012-08-17 |
| 273 | 95 | John | Doe | 2012-08-20 | 2012-11-16 |
+--------+------------+-------------------+------------------+-------------------+-----------------+
我做错了什么?
【问题讨论】:
-
请检查您对数据库架构的问题,因为就目前而言,您希望在查询中实现的关系看起来是错误的
-
你怎么知道
cpl_id 209属于start_date '2012-07-02'而不属于'2012-08-20'? -
@Grisha 哦。没想到,谢谢指出!