PHP SQL从2个表中获取数据并输出所需信息

时间:2015-10-15 17:15:09

标签: php mysql

我正在努力实现以下结果。 (我很抱歉可怕的解释,但我发现很难解释:P)

我需要来自2个表的数据。

表1 id,table2_id,user_id

表2 id,名称

Table1 example information
ID 1   Table2_id 1 user_id 3
ID 2   Table2_id 2 user_id 3
ID 3   Table2_id 5 user_id 3

Table2 Example Information
ID 1   Name TEST
ID 2   Name Hello
ID 3   Name Helpme
ID 4   Name Please
ID 5   Name IamLost

我想输出所有绑定user_id的内容3.这将是我理想的最终结果

TEST  你好  IamLost

我将此作为代码

$id = "3";

    $sth = $db->prepare("SELECT table2_id, user_id, naam FROM table1, table2 where user_id = $id  ");
$sth->execute();

$result = $sth->fetchAll();



foreach( $result as $row ) {

    echo $row['table2_id']  . ' ';
     echo $row['naam'] . '<br>';
}

但这只是输出一切,但两次输出。像这样

TEST
TEST
Hello
Hello
Helpme
Helpme
Please
Please
IamLost
IamLost

5 个答案:

答案 0 :(得分:2)

LEFT JOIN应该可以解决问题:

SELECT `table1`.`table2_id`, `table1`.`user_id`, `table2`.`name` 
FROM `table1`
LEFT JOIN `table2` 
ON `table1`.`Table2_id` = `table2`.`id`
WHERE `table1`.`id` = $id 

MySQL JOIN Syntax

答案 1 :(得分:1)

在SQL中使用联接。

SQL Query应如下所示:

SELECT T1.USER_ID, T2.NAME
FROM TABLE1 AS T1
JOIN TABLE2 AS T2
ON T1.TABLE2_ID = T2.ID
WHERE T1.USER_ID = 3

答案 2 :(得分:1)

这两个表必须相互关联。选择时,返回的行应该等于这两个表。这就是我们使用表连接的原因,例如

SELECT a.user_id,a.table_id,b.name FROM table1 as a, table2 as b
RIGHT OUTER JOIN table 1
ON b.ID = a.table2_id
AND table1.user_id = 3

答案 3 :(得分:0)

我相信你需要更精确:

 $sth = $db->prepare("SELECT table2_id, user_id, name 
                 FROM table1
                 LEFT JOIN table2 
                 ON table1.Table2_id = table2.id
                 WHERE user_id = $id  ");

答案 4 :(得分:0)

一个简单的右外连接将帮助你。

SELECT * FROM table2
RIGHT OUTER JOIN table 1
ON table2.ID = table1.table2_id
AND table1.user_id = 3