2013-02-19 47 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 

希望能够解决这个问题。

相关问题