我有以下表格:
`course`:
`id` (PK)
`userid` (FK)
`fromtimeid` (FK) --> `timetable_time`
`tilltimeid` (FK) --> `timetable_time`
`course_timetable`:
`id` (PK)
`courseid` (FK) --> `course`
`timetable_dayid` (FK) --> `timetable_day`
`timetable_time`:
`id` (PK)
`value`
`timetable_day`:
`id` (PK)
`value`我想给$userid提供数据,并希望得到包含该用户时间表的数组。
我试着工作的想法是:
userid、fromtimeid和tilltimeid相对应的课程timetable_time表以获取从#2获取的fromtimeid和tilltimeid的值。course_timetable与course_timetable.courseid连接到course.id (从#3获取)从course.id表中获取天数timetable_day并得到天的值。我尝试过执行以下操作,但它引发了一个错误:
SELECT `course`.*, `course_timetable`.*
FROM (`course`)
JOIN `course_timetable` ON `course_timetable`.`courseid` = `course`.`id`
JOIN `timetable_day` ON `timetable_day`.`id` = `course_timetable`.`timetable_dayid`
JOIN `timetable_time` ON `timetable_time`.`id` = `course`.`fromtimeid`
JOIN `timetable_time` ON `tiemtable_time`.`id` = `course`.`tilltimeid`
WHERE `userid` = $id显示的错误是:
Error Number: 1066
Not unique table/alias: 'timetable_time'
SELECT `course`.*, `course_timetable`.* FROM (`course`) JOIN `course_timetable` ON `course_timetable`.`courseid` = `course`.`id` JOIN `timetable_day` ON `timetable_day`.`id` = `course_timetable`.`timetable_dayid` JOIN `timetable_time` ON `timetable_time`.`id` = `course`.`fromtimeid` JOIN `timetable_time` ON `timetable_time`.`id` = `course`.`tilltimeid` WHERE `teacherid` = 0我哪里出问题了?
发布于 2013-12-15 09:00:44
由于要多次使用同一个表,因此需要给它们提供别名以消除它们的歧义:
JOIN `timetable_time` t1 ON t1.`id` = `course`.`fromtimeid`
JOIN `timetable_time` t2 ON t2.`id` = `course`.`tilltimeid`发布于 2013-12-15 09:00:37
你要加入timetable_time两次。
首先,我想知道这是否有必要。但是,如果是这样的话,您至少需要给其中一个别名:
JOIN SomeTimable AS SomeTableAlias ON ...
此外,在引用特定表时,需要使用别名。所以在SELECT和ON子句中使用别名。
(顺便说一句。在对表进行别名时,可以省略关键字AS。)
发布于 2013-12-15 09:00:40
您的问题是,您要两次加入表timetable_time并使用相同的名称。将其改为类似于:
SELECT `course`.*, `course_timetable`.*
FROM (`course`)
JOIN `course_timetable` ON `course_timetable`.`courseid` = `course`.`id`
JOIN `timetable_day` ON `timetable_day`.`id` = `course_timetable`.`timetable_dayid`
JOIN `timetable_time` t1 ON t1.`id` = `course`.`fromtimeid`
JOIN `timetable_time` t2 ON t2.`id` = `course`.`tilltimeid` WHERE `userid` = $idhttps://stackoverflow.com/questions/20592800
复制相似问题