联接表上的PHP错误表示不是唯一的表或别名


PHP error on joining table says not unique table or alias

我不知道如何修复这件事——只要一点帮助就好了。

错误:表/别名不唯一。

为什么我会出现这个错误?我相信为什么联接是正确的。请帮助

 $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";