2012-10-24 75 views
1

我試圖加入5個不同的表。他們每個人都有一個Mysql加入多個表

名稱列,ID列和實驗柱

除此之外,沒有什麼完全所有這些是一樣的。

SELECT name FROM `weapons`,`arrows`,`trees`,`ores`,`bars` ORDER BY exp DESC 

是我能想出的,它說名稱是不明確的。謝謝!

這就像我試圖如果你有你需要的表名添加到列名稱相同的列組合成一個大名單

+0

你確定你不想要一個聯盟而不是JOIN? – jmoerdyk

+0

我不知道我需要什麼。哈.... –

+0

@AlanBowen請張貼一些樣本數據,然後期望的結果,然後你會得到一個答案,可以產生結果。 – Taryn

回答

0

您可能需要使用一個表前綴標識表從哪個,要檢索name例如如下:

SELECT w.name FROM weapons w, arrows a, trees t, ores o, bars b ORDER BY exp DESC 

我想你也錯過了加入條件。

您的查詢應該是這樣的:

SELECT w.name 
FROM weapons w JOIN arrows a 
    ON w.id = a.id 
    JOIN trees t 
    ON a.id = t.id 
    JOIN ores o 
    ON t.id = o.id 
    JOIN bars b 
    ON o.id = b.id 
ORDER BY exp DESC; 

或者,如果你想爲union --> combine rows from all tables則:

SELECT name 
FROM weapons 
UNION ALL 
SELECT name 
FROM arrows 
UNION ALL 
SELECT name 
FROM trees 
UNION ALL 
SELECT name 
FROM ores 
UNION ALL 
SELECT name 
FROM bars; 
1

5個單獨的用戶表。您還可以爲表使用別名,並縮短查詢。

如果您想選擇的weaponsarrows表的name列別

SELECT w.name, a.name 
FROM `weapons` as w, `arrows` as a,`trees` as t,`ores` ass o,`bars` as b 
ORDER BY exp DESC 
+0

沒有一個表具有相同的名稱。 –

+0

我會在列名上放置一個別名,這樣你就知道它來自'weapon.name作爲WeaponsName,arrows.name作爲ArrowsName'的表是什麼表。 – Taryn

+0

@AlanBowen:但是列具有相同的名稱。你需要從哪個表中告訴數據庫引擎你想要哪個'name'列。 –

0

如果你正在尋找一個大名單,你想聯盟表格,而不是JOIN。

SELECT * FROM weapons 
UNION 
SELECT * FROM arrows 
UNION 
SELECT * FROM trees 
UNION 
SELECT * FROM ores 
UNION 
SELECT * FROM bars; 

如果你只是想的名字,SELECT name代替SELECT *

0

如果你想要一個大名單,你可以使用以下命令:

select name, id, exp, 'weapons' as TableFrom 
from weapons 
union all 
select name, id, exp, 'arrows' as TableFrom 
from arrows 
union all 
select name, id, exp, 'trees' as TableFrom 
from trees 
union all 
select name, id, exp, 'ores' as TableFrom 
from ores 
union all 
select name, id, exp, 'bars' as TableFrom 
from bars 
order by 3 

我加了最後一欄,以幫助確定數據來自哪個表。如果你不想要,那麼你可以放棄它。