2015-03-02 124 views
0

我無法連接多個表。 我可以得到2加入,但我得到一個錯誤,當我嘗試加入所有三個:MySQL左連接3表錯誤

這工作:

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

剛剛從capman,caprange'這裏刪除'caprange'' – Alex 2015-03-02 21:53:18

+0

您正在混合通常會引發錯誤的連接符號。我真的很驚訝你的第一個工作! – xQbert 2015-03-02 21:56:41

回答

0

不知道你的意思是加入caprange兩次。如果是這樣,你可以使用別名來指向正確的表。查詢可以被改寫爲:因爲我不知道你是用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 

,在用正確的別名查詢更換R1/R2。