2009-10-07 109 views
3

我有库存记录的表,并描述每个库存记录文件的另一个表,是这样的:如何在子查询中使用外部查询的列?

inventory (t1) 
t1id  t1c1 
1   desc1 
2   desc2 
3   desc3 

documents (t2) 
t2id t2c1  t1id 
1  doc1  1 
2  doc2  1 
3  doc3  2 
4  doc4  3 

,所以我尝试此查询的,我得到一个错误,告诉我,有没有这样的列(T1。 t1id)附近的子查询= s

SELECT t1c1,(SELECT GROUP_CONCAT(t2c1) FROM t2 WHERE t1.t1id = t2.t1id) FROM t1 

任何想法?

+1

哪个版本的'MySQL'? – Quassnoi 2009-10-07 16:20:33

回答

3

这部作品既5.05.1

CREATE TABLE t1 (t1id INT NOT NULL, t1c1 VARCHAR(20) NOT NULL); 

CREATE TABLE t2 (t2id INT NOT NULL, t2c1 INT NOT NULL, t1id INT NOT NULL); 

SELECT t1c1, 
     (
     SELECT GROUP_CONCAT(t2c1) 
     FROM t2 
     WHERE t1.t1id = t2.t1id 
     ) 
FROM t1 

您可以尝试重写它作为一个JOIN

SELECT t1c1, GROUP_CONCAT(t2c1) 
FROM t1 
LEFT JOIN 
     t2 
ON  t2.t1id = t1.t1id 
GROUP BY 
     t1.t1id 
0

您必须指定表名(单据,库存)

SELECT t1c1, (SELECT GROUP_CONCAT(t2c1) 
       FROM documents t2 
       WHERE t1.t1id = t2.t1id) 
FROM inventory t1 
相关问题