我不知道如何修复这件事——只要一点帮助就好了。
错误:表/别名不唯一。
为什么我会出现这个错误?我相信为什么联接是正确的。请帮助
$q = "SELECT * FROM `curriculum` "
. "INNER JOIN `subject` ON `curriculum`.`subject`=`subject`.`sub_id` "
. "LEFT JOIN `subject` ON `curriculum`.`cur_pr`=`subject`.`sub_id` "
. "WHERE `course`=:cid and `cur_year`=1";
将代码更改为
$q = "SELECT * FROM `curriculum` AS A "
. "INNER JOIN `subject` AS B ON `A`.`subject`=`B`.`sub_id` "
. "LEFT JOIN `subject` AS C ON `A`.`cur_pr`=`C`.`sub_id` "
. "WHERE `course`=:cid and `cur_year`=1";
如果您想再次加入相同的表,请使用Table Aliases
此处AS
用于此目的
您会得到一个错误,说表/别名不是唯一的,因为这行代码:
"在
curriculum
.cur_pr
=subject
.sub_id
上左联接subject
">
它不知道什么科目属于哪个表(第一个或第二个(。你可以在上尝试这个代码
$q = "SELECT * FROM `curriculum` AS cu "
. "INNER JOIN `subject` AS su1 ON `cu`.`subject`=`su1`.`sub_id` "
. "LEFT JOIN `subject` AS su2 ON `cu`.`cur_pr`=`su2`.`sub_id` "
. "WHERE `cu.course`=:cid and `cu.cur_year`=1";