0

SQLでテーブルを結合するというトピックを把握しようとしています。複数の結合があることは知っていますが、ここでどれを実装すればよいかわかりません:

これがphpの私のSQL行です:

$sql=mysql_query("
SELECT * FROM comments 
WHERE item_id = '{$item_id}' 
   AND review > '' 
ORDER BY good DESC, rate_id ASC");

これが私が結合したいものです: "users" と呼ばれる別のテーブル。*"users" と "comments" の両方に、結合する "user_id" という列があります。* これら 2 つを関連付けて、users テーブルで完全な "username" を見つけたいと思います。

SELECTがベスト プラクティスではないことはわかっています。しかし、このデモのために、ここにそれを含めてもらえますか? また、注意が必要な MySQL インジェクションの可能性も知っています。**

4

2 に答える 2

2

ANSI SQL-92ではなく、この形式を使用することをお勧めしますANSI SQL-89。これを試してください:

SELECT a.* , b.*
FROM comments a
        INNER JOIN users b
            ON a.user_id = b.user_id
WHERE item_id = '{$item_id}'  AND 
      review > '' 
ORDER BY good DESC, rate_id ASC

結合の適切な定義
ここで何かを読んでください:内部結合(ANSISQL-89とANSISQL-92)

追加情報:

これにはPHPを使用しているので、PHPPDOテクノロジーの使用もお勧めします

その例は次のとおりです。

<?php


$stmt = $dbh->prepare("SELECT a.* , b.*
    FROM comments a
            INNER JOIN users b
                ON a.user_id = b.user_id
    WHERE item_id = ?  AND 
          review > ? 
    ORDER BY good DESC, rate_id ASC");

$stmt->bindParam(1, $item_id);
$stmt->bindParam(2, '');
$stmt->execute();

?>
于 2012-08-09T06:23:48.080 に答える
0

これを試して、結合を学習するには、こちらを参照してください

SELECT c.* , u.*
FROM comments c
     INNER JOIN users u
         ON c.user_id = u.user_id
WHERE item_id = '{$item_id}' 
      AND review > '' 
ORDER BY good DESC, rate_id ASC;
于 2012-08-09T06:22:29.033 に答える