2011-03-26 25 views
1

我正在嘗試使用TWICE內部連接語句在同一個明細表中獲取引用值。如何在同一個明細表上重複使用內部連接

Master table: bags_tbl 
ID ...  bagA  bagB 
1 ...  121   122 
2 ...  123   124 
3 ...  125   126 

Detail table: fruit_tbl 
ID ...  fruit ... 
121  strawbery 
122  apple 
123  orange 
124  raspberry 
125  pear 
126  pineapple 


SELECT 
bags_tbl.ID, 
bags_tbl.A, 
bags_tbl.B, 
fruit_tbl.fruit AS bagA_fruit, 
fruit_tbl.fruit AS bagB_fruit 
FROM 
bags_tbl 
Inner Join fruit_tbl ON bags_tbl.bagA = fruit_tbl.fruit 
Inner Join fruit_tbl ON bags_tbl.bagB = fruit_tbl.fruit 

此拋出錯誤:沒有獨特的表/別名... 如何使SQL語句來獲得主表的文本表示?

thankx很多

回答

3
SELECT 
    bags_tbl.ID, 
    bags_tbl.A, 
    bags_tbl.B, 
    A.fruit AS bagA_fruit, 
    B.fruit AS bagB_fruit 
FROM bags_tbl 
Inner Join fruit_tbl A ON bags_tbl.bagA = A.id 
Inner Join fruit_tbl B ON bags_tbl.bagB = B.id 
+0

正確的答案,但有點奇怪的是,當使用別名列名時使用可選的'AS',但在混淆表名時將其忽略。 – 2011-03-27 01:00:32

+0

@Ted如果你認爲它是從OP的查詢中儘可能少地改變的結果,這並不奇怪。 – RichardTheKiwi 2011-03-27 01:56:13

+0

非常感謝,我會有很嚴重的困難想辦法解決...... – lyborko 2011-03-27 09:29:10

1

試試這個。您需要爲每個連接授予唯一的別名,以便SQL知道您在SELECT子句中引用的是哪一個別名。

SELECT 
bags_tbl.ID, 
bags_tbl.A, 
bags_tbl.B, 
fruitA.fruit AS bagA_fruit, 
fruitB.fruit AS bagB_fruit 
FROM 
bags_tbl 
JOIN fruit_tbl fruitA ON bags_tbl.bagA = fruitA.id 
JOIN fruit_tbl fruitB ON bags_tbl.bagB = fruitB.id 
+0

謝謝,我明白.... – lyborko 2011-03-27 09:30:31

相關問題