2011-02-23 15 views
0

私は2つのデータテーブルを持っています。 1つはユーザー識別可能な情報(ユーザー名、IDなど)のすべてを含み、残りはそれらによって生成されたコンテンツです。私はコメントページをやっています。だから、彼らがコメントを提出するとき、彼らのuser_idはコメントと一緒に入ります。コメントページで、私はすべてのコメントを表示するクエリを実行していますが、私がしなければならないことは、コメントからuser_idを使用してuser_databaseから名前を取得することです。私は以下の質問を成功なしで使用しています。どうすればそれを微調整できますか?情報を取得する2つのクエリ

コード:

$query="SELECT * FROM comments where post_id = '$postid'"; 
    $result=mysql_query($query); 

    $num=mysql_numrows($result); 

    mysql_close(); 

    echo ""; 

    $i=0; 
    while ($i < $num) { 

    $comment=mysql_result($result,$i,"comment"); 
    $user_id=mysql_result($result,$i,"user_id"); 
    $other=mysql_result($result,$i,"other"); 


    echo "<br>$comment, $user_id, $other"; 

    echo ""; 

    $i++; 
    } 

    if(mysql_num_rows($result) < 1) { 
     echo "<div id=noresultfound>No results for $comment</div>"; 
     } 
+3

どのようなエラーが表示されますか?あなたのテーブル構造は何ですか? –

+0

エラーはありません。私はこのクエリから$ user_idを使ってユーザー名を取得する方法を教えています... – AAA

+1

あなたのテーブル構造は何ですか?すべての関連テーブルに対して 'SHOW CREATE TABLE yourtable'を投稿してください。 –

答えて

2

単一のクエリで二つのテーブルから情報を取得するには、使用することができます参加:あなたが使用することができます

SELECT 
    c.userid, 
    c.comment, 
    u.username, 
    ...etc... 
FROM comments AS c 
JOIN user_database AS u 
ON c.user_id = u.user_id 
WHERE post_id = '42' 
+2

+1ですが、取得するデータセットを減らすために返すカラムを指定します。 –

+1

@ジョンキャバン:+1はい私は全く同意します。私は彼が彼の正確なテーブル情報(質問にコメントを参照)を投稿して、私がこれを行うことができるようにしています。それまでは、実際の列名のプレースホルダーを含めるように答えを更新しました。 –

2

は同じクエリで二つのテーブルからデータを取得するには"SQL JOIN"です。例えば

select c.*, u.* from comments c join users u on u.id = c.user_id

このクエリは、それぞれが共通のユーザを有し、両方のテーブルからすべての列を引っ張ってきます。

Read more here.

2
私はその後、ユーザテーブル

SELECT * FROM comments LEFT JOIN users ON comments.user_id = users.user_id WHERE post_id = '$postid' 
に参加するためにあなたのSQLを修正見て、次の

$query="SELECT * FROM comments where post_id = '$postid'"; 
$result=mysql_query($query); 
while($row = mysql_fetch_assoc($result)) 
{ 
    echo "<br>".$row['comment'].", ".$row['user_id'].", ".$row['other']; 
} 

の線に沿って何かをする、ややあなたのコードを変更することで始まります

そして、あなたはその人の名前を

で得ることができます
関連する問題