2013-02-19 48 views
1

我很新的SQL,但碰了壁昨晚,當我在我的網站進行實驗。我一直試圖找出現在幾個小時沒有運氣,所以這裏是我的第一篇文章在堆棧溢出!連接兩個表,所以我可以使用ORDER BY

我的問題是,我想排序表,但是我需要排序是從主數據不同的查詢。所以我有一個數據表輸出很好,但我不能使用ORDER BY到我想要的字段,因爲它來自不同的查詢。

我有兩個表:

character_ 
quest_globals 

數據我從兩個表需要:

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 

我想加入這兩個表,所以我可以訂購的結果我怎麼樣。我需要使用UNION還是JOIN?

character_quest_globals有一個共同的字段character_.id是相同的quest_globals.charid所以我猜我用它來加入?

回答

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 

所以,它不會那麼凌亂

+0

+1爲漂亮和乾淨的答案:) – 2013-02-19 12:41:30

+0

謝謝你,偉大的代碼。我只是調整了最後一點,因爲我在發帖時忽略了主帖中的一些信息。我試圖在ORDER之前添加WHERE q.name ='EXP_c.name',可能必須通過PHP來完成這一點 – user2087032 2013-02-19 12:49:09

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 
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 

希望能夠解決這個問題。

相關問題