私はテーブルを持っています。MySQLデータベースクエリに
それはように構成されている:
CREATE TABLE `wall` (
`wall_id` int(10) NOT NULL auto_increment,
`user_id` int(10) NOT NULL,
`wall_content` varchar(1024) NOT NULL,
`time_posted` varchar(64) NOT NULL,
`is_reply` int(10) NOT NULL,
PRIMARY KEY (`wall_id`)
) ENGINE=MyISAM
列「is_reply」は、の返信された「wall_id」のIDであろう。他のテーブルの内部結合に基づいてすべての行を取得し、user_idを相互参照し、その下のコメントをグループ化するクエリを構造化するにはどうすればいいですか?
現在のクエリは、コメントをグループ化せずにそれを行います。それは:
SELECT wall.*, user_wall.*, users.username, users.avatar_id
FROM `wall`
INNER JOIN user_wall ON user_wall.wall_id = wall.wall_id
INNER JOIN users ON users.user_id = wall.user_id
WHERE user_wall.user_id=15
私はあなたがこれを理解することを望みます。
編集: テーブル 'user_wall'は、ユーザの壁にどのような値が格納されているかを示すテーブルで、 'wall'テーブルには実際に投稿されたものが格納されます。 'wall'テーブルのuser_idは、その投稿を投稿したユーザーの参照です。
現在のクエリ上記のようなとして完全に機能しているとリターンデータ:
wall_id | user_id | wall_content | time_posted | is_reply | user_id | wall_id | username | avatar_id
1 | 1 | *content* | *time* | 0 | 2 | 1 | User1 | 1
2 | 1 | *content2* | *time2* | 0 | 2 | 2 | User1 | 1
3 | 1 | *content3* | *time3* | 1 | 1 | 3 | User1 | 1
私の質問は、結果はとても似ているので、どのようにクエリを構築します、であるのに対し:
wall_id | user_id | wall_content | time_posted | is_reply | user_id | wall_id | username | avatar_id
1 | 1 | *content* | *time* | 0 | 2 | 1 | User1 | 1
3 | 1 | *content3* | *time3* | 1 | 1 | 3 | User1 | 1
2 | 1 | *content2* | *time2* | 0 | 2 | 2 | User1 | 1
'wall_id'が3で、 'is_reply'が1の行が 'wall_id'の行の下にある行。同様に、 'is_reply'が2の行は、 'wall_id'が2の行になります。
あなたはuser_wallと呼ばれる結合テーブルを持っているか来ますか?ウォールテーブル内のuser_idのポイントは何ですか? – Jacob
理想的には、結果セットはどのように見えますか?あなたの目標出力が何であるかのいくつかの役割を私たちに教えてください。 – dmcnelis
は私の例でより具体的なデータを追加しました。 – FraserK