SQL - 加入两个表

时间:2012-08-09 06:21:08

标签: php mysql sql

我试图掌握在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”的列要加入。*我想将这两个列关联起来,以便在users表中找到完整的“用户名”。

我知道SELECT 不是最佳做法;但是为了这个演示,你能在这里加入吗?我也知道MySQL注入的可能性。 **

2 个答案:

答案 0 :(得分: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

Good Definition of JOINs
Read something here: INNER JOIN (ANSI SQL-89 vs ANSI SQL-92)

其他信息:

由于您正在使用PHP,我还建议您使用PHP PDO Technology

一个例子是:

<?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();

?>

答案 1 :(得分:0)

尝试此操作并学习联接,请参阅here

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;