2011-07-22 13 views
0

私はmysqlを初めて使用しているので、私と一緒に裸にする必要があります。テーブルAから1行、テーブルBから複数の行を取得する方法

表Aは「​​users」、表Bは「comments」です。 Table Aのフィールド「user_id」と「user_name」と、表Bの「date」、「comment」、「user_id」の各フィールドを選択したいとします。

要するに、すべてのユーザーとそのコメントを取得しようとしています1つのクエリで以下のような複数のコメントがあるか、1つのコメントだけで2つのクエリを実行する必要があるので、コメントを独自の配列に入れることはできますか?

基本例

のuser_id = 1
ユーザ名= fooの
コメント[0] [ '日付'] = 1234567890件の
コメント[0] [ 'コメント'] = "Hello Worldの!"
コメント[1] [ '日付'] 1234567890件の
コメント[1] [ 'コメント'] = "MySQLのN00B"

どれ基本的な例を=はので、私はそれの周りに私の頭を取得することができます素晴らしいことです。

おかげ

+0

クエリの実行時には何が表示されますか?あなたは 'user_id'を与えていますか? PHPのサーバーサイド言語は何ですか?今はどうしているのですか?これまでに何を試してみましたか? – Shef

答えて

1

これはuser_idのを想定するとuser_id = 1

SELECT u.user_id, u.user_name, c.`date`, c.`comment` 
FROM comments c 
INNER JOIN users u ON c.user_id = u.user_id 
WHERE c.user_id = 1 
+0

申し訳ありませんが私ははっきりしませんでしたが、どのように私はすべてのユーザーとコメントを持ってくるだろう、私はちょうどWHERE句を削除しますか?ありがとう – Joe

+0

@ Joe:はい、単にWHERE句を削除します。 – Shef

0

のすべてのコメントを選択するには、一般的なクエリになりますが、ここで、1であるあなたが持つ連想配列をしたい場合は、コードでありますすべてのユーザーのコメントJOINステートメントを使用するクエリは1つだけです。

$res = mysql_query("SELECT users.user_id as uid, users.user_name as username, comments.date, comments.comment, comments.user_id as cid FROM `users` LEFT JOIN comments on uid=cid WHERE cid = 1"); 

$i = 0; 
while($arr = mysql_fetch_assoc($res)) 
{ 
    $comments[$i]['date'] = $arr['date']; 
    $comments[$i]['comment'] = $arr['comment']; 
    $i++; 
} 

//var_dump($comments); 
+0

返事をありがとう。 1人のユーザーとすべてのコメントを1行だけ持つことは可能でしょうか、それとも、1人のユーザーとコメントしか持たないために、結果を自分で調べなければなりませんか。 – Joe

1

これをJOINと呼びます。いくつかのSQL/MySQLのチュートリアルを取ることをお勧めします。

関連する問題