[英]mysql query help?
(
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
最明显的解决方案是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;
这个怎么样:
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']."'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.