繁体   English   中英

mysql查询帮助?

[英]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_TABLE

 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM