1

5つの異なるテーブルを結合しようとしています。彼らはそれぞれ持っています

名前列、ID列、およびExp列

それ以外は、それらすべてについて完全に同じものはありません。

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

名前が曖昧だと私が思いつくことができるのはそれだけです。ありがとう!

これは、1つの大きなリストにまとめようとしている5つの個別のユーザーテーブルのようなものです。

4

4 に答える 4

1

同じ名前の列がある場合は、テーブル名を列に追加する必要があります。テーブルのエイリアス名を使用して、クエリを短縮することもできます。

およびテーブルのname列を選択する場合は、weaponsarrows

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
于 2012-10-24T17:48:49.257 に答える
0

1つのテーブルプレフィックスを使用して、次のように取得するテーブルを識別することができ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;
于 2012-10-24T17:49:49.260 に答える
0

1つの大きなリストを探している場合は、JOINではなく、テーブルをUNIONする必要があります。

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

そして、名前だけが必要な場合はSELECT nameSELECT *

于 2012-10-24T17:53:35.563 に答える
0

1つの大きなリストが必要な場合は、次を使用できます。

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

データがどのテーブルからのものであるかを識別するのに役立つ最後の列を追加しました。あなたがそれを望まないならば、あなたはそれを落とすことができます。

于 2012-10-24T17:54:57.513 に答える