2015-10-15 61 views
0

我正試圖實現以下結果。 (我很抱歉的可怕的解釋,但我覺得很難解釋:P)PHP SQL從2個表中獲取數據並輸出想要的信息

我需要從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.這將是我理想的最終結果

測試 你好 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 
+1

'選擇table1.user_id,table2.naam從表1內加入表2上table1.table2_id = table2.id'你跟他們倆共有的ID信息連接兩個表並與 –

+0

相關我建議您瞭解準備好的陳述。否則,你會打開大門,破壞你的數據庫/應用程序。你可以在這裏瞭解它:http://stackoverflow.com/a/60496/652519 – Michael

回答

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

我猜'ON table1.Table2_id = table2.id' – Alex

+0

這是正確的@Alex,我會編輯。 –

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 "); 
1

使用SQL連接。

的SQL查詢應該是這樣的:

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 
0

一個簡單的右外連接將幫助你在這裏。

SELECT * FROM table2 
RIGHT OUTER JOIN table 1 
ON table2.ID = table1.table2_id 
AND table1.user_id = 3 
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