0

質問したいのですが、本当に答えが必要です。

ここでは、1 つのデータベースに 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 を使用している場合は、助けが必要です。

新しい質問

すみません、まだわかりません、これが私の本当のテーブルです

助けてください。[前回の投稿][1] の答えがまだわかりません。ここには 3 つのテーブルがあります。

1 # プロファイル
-id_user
- ユーザー名
- Eメール

2 # 画像
-id_picture
-id_user
- タイトル

3 # 購読する
-id_user_a
- Id_user_b (user_a で購読している人)
- 日にち

ここで問題は、サブスクした人だけにタイトル画像を表示し、サブスクライブしていない人にはタイトル画像を表示しない方法です。

4

3 に答える 3

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
于 2012-05-11T11:05:20.957 に答える
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;

テーブルの正規化を検討する必要があります。すべてのテーブルでユーザー名を複製する必要はありません。

于 2012-05-11T10:51:22.310 に答える
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());

于 2012-05-11T10:52:48.440 に答える