2012-07-18 27 views
8

ho una tabella A con la seguente definizione in MySQLUTILIZZO parola chiave in MySQL

---------------------------------- 
id c_id  t_id 
------------------------------- 

dove i riferimenti c_id cid su un altro tavolo B con la seguente definizione

================================================ 
id cid cname 
================================================= 

Così sto inviando il seguente interrogazione

select group_concat(cname) as list 
from A join B using (cid) 
where t_id="something"; 

Ma io sto ottenendo il seguente errore

Unknown column "cid" in from clause 

Ho provato a cambiare in "c_id", ma che doesnt sembrano funzionare sia ..

Ogni aiuto è apprezzato.

Grazie

risposta

11

USING in MySQL è solo una forma breve per un ON clausola standard, e funziona solo quando il nome di colonna è identica in entrambe le tabelle.

Da the manual:

I UTILIZZO (column_list) nomi clausola un elenco di colonne che deve esistere in entrambe le tabelle.

Invece, fare questo:

select group_concat(B.cname) as list 
from A 
inner join B on A.c_id = B.cid 
where A.t_id = 'something'; 
2

Entrambe le colonne hanno bisogno lo stesso nome: o c_id o cid Poi la clausola utilizzando funzionerà

0

è possibile utilizzare

select group_concat(cname) as list 
from A join B using (c_id) 
where t_id="something"; 

ma c_id è comune in entrambe le tabelle.