加入两个表,以便我可以使用ORDER BY

时间:2013-02-19 12:28:53

标签: php sql

我对SQL很陌生,但昨晚在我的网站上进行实验时遇到了问题。我一直试图弄清楚好几个小时没有运气,所以这是我在Stack Overflow上的第一篇文章!

我的问题是我正在尝试对结果表进行排序,但我需要排序的是来自与主数据不同的查询。所以我有一个输出正常的数据表,但是我不能将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_.idquest_globals.charid相同,所以我猜我用这个来加入?

3 个答案:

答案 0 :(得分: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

所以,它不会那么凌乱

答案 1 :(得分: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

答案 2 :(得分: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

希望它能解决这个问题。