这听起来很简单,可能就是......
好吧,我有两张桌子users
和messages
。
格式如下:
users
ID | username
1 | im_a_user
2 | another_user
messages
ID | FROM | TO | CONTENT
1 | 1 | 2 | Blah blah blah...
2 | 2 | 1 | Hello, World!
3 | 2 | 1 | Another message.
如果您没有猜到,列FROM
和TO
是对ID
表中users
的引用。
无论如何,我想做一个返回类似的查询:
ID | FROM | TO | CONTENT
1 | im_a_user | another_user | Blah blah blah...
2 | another_user | im_a_user | Hello, World!
3 | another_user | im_a_user | Another message.
我之前用JOINS
做过这个,但是我有点生疏了,我想知道是否有更简单的方法..如果没有,使用JOIN
的查询就可以了
答案 0 :(得分:2)
JOIN
完全存在于这样的事情中。您需要这样的查询:
SELECT
m.id,
sender.username AS sender,
recipent.username AS recipient,
m.content
FROM messages m
INNER JOIN users sender
ON sender.id = `m.from`
INNER JOIN users recipent
ON recipient.id = m.to
如果NULL
或TO
列上有FROM
,请将适当的INNER JOIN
更改为LEFT OUTER JOIN
。
作为旁注,我建议您不要使用FROM
之类的SQL保留字作为列名。
答案 1 :(得分:0)
我想一些联接将是最好的方法。
从我的头顶......这样的事情?
SELECT messages.ID, from_user.username, to_user.username, messages.CONTENT FROM messages
LEFT JOIN users as from_user ON (messages.FROM = users.ID)
LEFT JOIN users as to_user ON (messages.TO = users.ID)