我对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_.id
与quest_globals.charid
相同,所以我猜我用这个来加入?
答案 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
希望它能解决这个问题。