我正在尝试开发一个
的查询http://sqlfiddle.com/#!2/85971/2
概要
身体:'你好身体'
用户2回复:
作为用户1,SQL应该返回
THREAD_ID |SUBJECT | SENDER_ID | BODY | Responded
1 | Hi Subject | 2 | Hi Body Response | false
作为用户2,SQL应该返回
THREAD_ID |SUBJECT | SENDER_ID | BODY | Responded
1 | Hi Subject | 1 | Hi Body | true
请看小提琴
我对它的射击是以下,占用1和2但不是3英亩,我试图用UNIONS来实现这一目标但却无处可去。
SELECT * FROM (
SELECT t.id as thread_id, t.subject, m.sender_id, m.body
FROM messages m
JOIN threads t ON (m.thread_id = t.id)
ORDER BY t.id asc, m.cdate desc
) as results
WHERE results.sender_id != currentUserID
GROUP BY results.thread_id;
答案 0 :(得分:1)
检查以下查询。我还添加了消息ID列。
第一个结果......
SELECT t.id as thread_id, t.subject, m.sender_id, m.body, m.id,
(SELECT CASE s.status WHEN 1 THEN 'true' ELSE 'false' END
FROM STATUS s where s.message_id = m.id and s.user_id = 1) Responded
FROM messages m
JOIN threads t ON (m.thread_id = t.id)
WHERE m.sender_id != 1
第二个......
SELECT t.id as thread_id, t.subject, m.sender_id, m.body, m.id,
(SELECT CASE s.status WHEN 1 THEN 'true' ELSE 'false' END
FROM STATUS s where s.message_id = m.id and s.user_id = 2) Responded
FROM messages m
JOIN threads t ON (m.thread_id = t.id)
WHERE m.sender_id != 2
谢谢!
@leo。