(
SELECT u.username, u.picture, m.id, m.user_note, m.reply_id, m.reply_name, m.dt
FROM relationships r
JOIN notes m ON m.user_id = r.leader
JOIN user u ON r.leader = u.user_id
WHERE r.listener ='2'
)
UNION ALL
(
SELECT u.username, u.picture, m.id, m.user_note, m.reply_id, m.reply_name, m.dt
FROM notes m
JOIN user u ON m.user_id = u.user_id
WHERE u.user_id ='2'
)
WHERE dt > '2010-09-20_131830'
ORDER BY dt DESC
这是什么,它询问用户(登录),他们关注的人并检索他们的消息。表格如下所示,!
我想要添加到此查询中,也是用户(登录)更新以及。但显然用户deosnt跟随自己。什么是我能做到的最佳方式!!
user_id | username
-------------------
1 | solomon
2 | muna
id user_id| message
---------------------------------------
1 1 | this is my first message
2 1 | this is my second message
3 2 | this is muna message
leader | follower
------------------
1 | 2
答案 0 :(得分:2)
最明显的解决方案是UNION ALL
您的查询,另一个类似查询检索登录用户的消息。像这样:
(
SELECT u.username, u.picture, m.id, m.user_note, m.reply_id, m.reply_name, m.dt
FROM relationships r
JOIN notes m ON m.user_id = r.leader
JOIN user u ON r.leader = u.user_id
WHERE r.listener ='".$_SESSION['user_id']."'
)
UNION ALL
(
SELECT u.username, u.picture, m.id, m.user_note, m.reply_id, m.reply_name, m.dt
FROM notes m
JOIN user u ON m.user_id = u.user_id
WHERE u.user_id ='".$_SESSION['user_id']."'
);
<强>更新强>
在更新的查询之后,您不能拥有WHERE
子句。您应该为每个查询分别使用WHERE
,或者使用这样的派生表:
SELECT *
FROM
((
SELECT u.username, u.picture, m.id, m.user_note, m.reply_id, m.reply_name, m.dt
FROM relationships r
JOIN notes m ON m.user_id = r.leader
JOIN user u ON r.leader = u.user_id
WHERE r.listener ='".$_SESSION['user_id']."'
)
UNION ALL
(
SELECT u.username, u.picture, m.id, m.user_note, m.reply_id, m.reply_name, m.dt
FROM notes m
JOIN user u ON m.user_id = u.user_id
WHERE u.user_id ='".$_SESSION['user_id']."'
)) d
WHERE d.dt > '2010-09-20_131830'
ORDER BY d.dt DESC;
答案 1 :(得分:2)
这个怎么样:
SELECT u.username, u.picture, m.id, m.user_note, m.reply_id, m.reply_name, m.dt
FROM notes m
INNER JOIN user u
ON m.user_id = u.user_id
WHERE (m.user_id = '".$_SESSION['user_id']."'
OR m.userID IN (
SELECT r.leader
FROM relationships r
WHERE r.listener ='".$_SESSION['user_id']."'))