簡體   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