2012-05-11 42 views
0

我想問一下,我真的需要答案。我按照用戶的顯示狀態

這裏我有一個數據庫中的3個表。

1#用戶 - id_user(INT) - 用戶名(文本)

2#status_update - id_status(INT) - id_user(INT) - 用戶名(文本) - 狀態(文字)

3#遵循 - id_user(INT) - id_user_follow(INT) - 用戶名(文本) - username_follow(文本)

問題是,如何顯示我關注的用戶的狀態..並且不顯示我不關注的用戶的狀態。 ?? ..使用PHP和MySQL,請,需要幫助。

新問題

對不起,IM仍然不明白了,這是我真正的表

請幫幫忙,我還是不明白,在[我以前的帖子]答案[1],在這裏我有3桌。

 
1 # profile 
- id_user 
- username 
- email 

2 # picture 
- id_picture 
- id_user 
- the title 

3 # subscribe 
- id_user_a 
- Id_user_b (people who subscribe at user_a) 
- date 

現在的問題是,如何顯示只有誰認購人的標題圖片,並不會顯示在人們的標題圖片誰不認同,

+0

瞭解[SQL連接(http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of- SQL-joins.html)。 – eggyal

+1

'status_update'表中不需要用戶名。另外,'follow'表中不需要用戶名和username_follow。我知道這並不能回答你的問題,但你應該在做其他事情之前解決這個問題。 –

回答

1

首先你應該修正的開始你的數據庫結構。這裏是我的建議:

users - id (int), username (varchar) 
status_updates - id (int), users_id (int), status (text) 
follow - users_id, following_users_id 

請注意,你不應該爲用戶節省在每個表用戶名,它僅保存users表。另外,用戶名應該是varchar類型。

這裏是在固定的數據庫查詢:

SELECT u.username, s.status 
FROM users u 
LEFT JOIN follow f ON u.id = f.following_users_id 
LEFT JOIN status_updates s ON u.id = s.user_id 
WHERE f.user_id = USER_ID 
+0

如何從新狀態訂單到舊狀態? –

+0

如果您沒有狀態日期,則應在查詢結束時添加'ORDER BY s.id DESC'。請注意,那是。ID'應該是'AUTO_INCREMENT' – vinculis

+0

謝謝你這麼多:D –

1
SELECT u.username, s.status 
FROM users u 
LEFT JOIN follow f ON (u.id_user = f.id_user_follow) 
LEFT JOIN status_update s ON (u.id = s.user_id) 
WHERE f.id_user = USER_ID; 

你應該看看到規範化你的表,你不需要在每個表中複製用戶名。

+0

+爲規範化評論 –

0

SQL:SELECT status FORM status_update AS s LEFT JOIN follow AS f ON s.id_user = f.id_user_follow WHERE f.id_user = 'YOUR_ID' LIMIT 0,5

比PHP這取決於你是否已經有了到DB連接媒體鏈接或不.. 的草案可以用var_dump($query->result());

+0

好吧謝謝你:D –