我正在努力实现以下结果。 (我很抱歉可怕的解释,但我发现很难解释: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
答案 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
答案 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