2009-10-07 110 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 
相關問題