1

私は SQL にかなり慣れていませんが、昨夜自分の Web サイトで実験を行っていたときに壁にぶつかりました。私は運が悪いので、何時間もそれを理解しようとしてきたので、スタックオーバーフローに関する私の最初の投稿です!

私の問題は、結果のテーブルを並べ替えようとしていることですが、並べ替える必要があるのは、メイン データとは異なるクエリからのものです。したがって、正常に出力されるデータのテーブルがありますが、別のクエリからのものであるため、必要なフィールドに ORDER BY を使用できません。

私は2つのテーブルを持っています:

character_
quest_globals

2 つのテーブルから必要なデータ:

character_.id
character_.name
character_.class
character_.level

quest_globals.charid   (Same value as character_.id)
quest_globals.name
quest_globals.value

Ordered by: quest_globals.value

これら 2 つのテーブルを結合して、結果を好きなように並べ替えたいと思います。これには UNION または JOIN を使用する必要がありますか?

character_と同じようにquest_globals共通のフィールドがあるので、これを使用して参加すると思いますか?character_.idquest_globals.charid

4

3 に答える 3

4
SELECT c.id, c.name, c.class, c.level, q.name, q.value 
FROM character_ c
LEFT JOIN
  quest_globals q
ON 
  q.charid  = c.id 
ORDER BY q.value

また、次のように列に名前を付けることができます。

c.name as char_name, q.name as quest_name

だから、そんなにぐちゃぐちゃにはなりません

于 2013-02-19T12:31:06.307 に答える
1
SELECT character_.id,character_.name,character_.class,character_.level,quest_globals.name,quest_globals.value
FROM character_
LEFT JOIN quest_globals ON quest_globals.charid  = character_.id 
ORDER BY quest_globals.value
于 2013-02-19T12:33:06.423 に答える
0

クエリは次のようになります。

SELECT character_.id
character_.name
character_.class
character_.level
FROM character_
INNER JOIN quest_globals
ON character_.id=quest_globals.charid
ORDER BY quest_globals.value

それが列を解決することを願っています。

于 2013-02-19T12:46:16.377 に答える