MySQL左连接3表错误

时间:2015-03-02 21:49:44

标签: mysql join

我无法加入多个表格。 我可以获得2加入,但是当我尝试加入所有三个时我收到错误:

这有效:

SELECT `capman`.`cman_code`, `capman`.`cman_name`, `caprange`.`cran_name`, `caprange`.`cran_mantextcode` 

from capman, caprange 

LEFT JOIN `capder` ON `caprange`.`cran_code` = `capder`.`cder_rancode` 

AND `capder`.`cder_discontinued` = '0000-00-00 00:00:00' 
LIMIT 10 

这有效:

SELECT `capman`.`cman_code`, `capman`.`cman_name`, `caprange`.`cran_name`, `caprange`.`cran_mantextcode`

from capman

LEFT JOIN `caprange` ON `caprange`.`cran_mantextcode` = `capman`.`cman_code` WHERE LCASE(cman_name) IN ('arbarth','alfa romeo','aston')
LIMIT 10

但是当我尝试将它们组合在一起时:

SELECT `capman`.`cman_code`, `capman`.`cman_name`, `caprange`.`cran_name`, `caprange`.`cran_mantextcode`

from capman, caprange 

LEFT JOIN `caprange` ON `caprange`.`cran_mantextcode` = `capman`.`cman_code` WHERE LCASE(cman_name) IN ('arbarth','alfa romeo','aston')

LEFT JOIN `capder` ON `caprange`.`cran_code` = `capder`.`cder_rancode` AND `capder`.`cder_discontinued` = '0000-00-00 00:00:00'

LIMIT 10

我收到了错误消息: 不是唯一的表/别名:' caprange'

1 个答案:

答案 0 :(得分:0)

不确定是否要加入caprange两次。如果是这样,您可以使用别名指向右表。查询可以重写为:

SELECT `capman`.`cman_code`, `capman`.`cman_name`, `caprange`.`cran_name`, `caprange`.`cran_mantextcode`
from capman, caprange r1 
LEFT JOIN `caprange` r2 ON r2.`cran_mantextcode` = `capman`.`cman_code` WHERE LCASE(cman_name) IN ('arbarth','alfa romeo','aston')
LEFT JOIN `capder` ON r1.`cran_code` = `capder`.`cder_rancode` AND `capder`.`cder_discontinued` = '0000-00-00 00:00:00'
LIMIT 10

由于我不确定您使用caprange加入哪个表,因此请使用正确的别名替换查询中的r1 / r2。