2012-04-25 167 views
0

我想根據登錄的用戶所關注的人來選擇來自用戶的帖子。我需要做什麼?如何在一條SELECT語句中使用兩個不同的表?我甚至不知道從哪裏開始。使用MySQL select語句

我有3個表: 用戶 帖子 追隨者

感謝。

+0

什麼是你的表格結構? – Shyju 2012-04-25 19:45:35

+0

請提供創建表的SQL,然後可以提供幫助。但它的要點是你使用外鍵和主鍵進行連接。 – 2012-04-25 19:46:34

+0

這似乎是它在一小時前爲您詳細解答:http://stackoverflow.com/questions/10321532/using-an-array-in-an-sql-query – 2012-04-25 19:56:36

回答

0
SELECT p.* 
FROM followers f 
JOIN posts p 
ON  p.author = f.following_id 
WHERE f.user_id = $logged_in 
ORDER BY 
     p.post_date DESC 

我必須補齊字段名稱,因爲您沒有提供它們。

+0

嗨Quassnoi,如果想要得到用戶自己的帖子以及他們正在關注的內容,我將如何將其添加到您的查詢中?謝謝:) – Saff 2012-11-21 14:52:07

+1

@SaffronHarris:請張貼它作爲另一個問題。 – Quassnoi 2012-11-21 15:23:32

+0

謝謝,我已經發布在這裏http://stackoverflow.com/questions/13502671/ar-get-own-posts-and-friends-posts – Saff 2012-11-21 21:56:41

0

我將與加入查詢去,因爲Quassonoi在他的回答表明,如果你想嘗試另一種解決方案,你可以用子查詢像這樣做

SELECT P.PostId,P.Title,P.Body 
FROM Post P WHERE P.CreatedById 
IN ( 
    SELECT FollowerID from Followers WHERE USER_ID=3 
    ) 

更換3與當前用戶ID。假設你的表結構是這樣的。

POST

PostId (int) 
Title 
Body 

關注

UserId (int) 
FollowerId (int) 
0

選擇兩個表中的使用做JOIN的 http://dev.mysql.com/doc/refman/5.0/en/join.html

基本上你從兩個表中選擇並定義連接條件。

假設你有兩個表:

  • 用戶列:USER_ID,USER_NAME,online_state
  • 帖子的列:POST_ID,USER_ID(用戶誰張貼了這個帖子),標題,消息

SELECT p.title,p.message FROM users u JOIN posts p ON u.user_id = p.user_id WHERE u.online_state ='online'

連接條件應該在ON之後,非j oin狀態在哪裏

+0

你也可以做SELECT ... FROM表JOIN table2 ON條件JOIN table3 ON條件JOIN table4 ON條件。 – Kveri 2012-04-25 19:51:39

+0

連接優於子查詢,因爲您不強制數據庫評估整個子查詢,尤其是使用從屬子查詢是邪惡的 – Kveri 2012-04-25 19:52:52