2011-10-12 67 views
0

我想使用一個SQL查詢,但我得到了多次相同的結果。Mysql加入以顯示唯一的ID

我讀到我必須使用INNER JOIN或LEFT JOIN來避免這種情況。唯一的問題是,我有點新手與MySQL,所以我實際上不能做一個成功的查詢。

查詢是這樣的

SELECT * 
FROM table1,table2 
WHERE table1.name LIKE '%$str%' 
OR 
table1.last_name LIKE '%$str%' 

$str的是,我在一個PHP函數傳遞,以使搜索的字符串。

+2

你從'table2'需要什麼樣的數據?否則,我認爲沒有理由加入'JOIN'。備份並告訴我們你想要做什麼。 –

+0

我實際上需要顯示一些table2行。我在table2中有一個外鍵,它是table1的id。我不知道是否有另一種更好的方式來做到這一點。如果有請讓我知道。 – Jackobsen

回答

0

您需要在這兩個表格之間進行連接。

SELECT * 
FROM table1 
INNER JOIN table2 
    ON table1.key = table2.key 
WHERE table1.name LIKE '%$str%' 
OR 
table1.last_name LIKE '$str%' 

您還應該使用mysql_real_escape_string來防止SQL注入。

$query = "SELECT * 
FROM table1 
INNER JOIN table2 
    ON table1.key = table2.key 
WHERE table1.name LIKE '%" . mysql_real_escape_string($str) ."%' 
OR 
table1.last_name LIKE '%" . mysql_real_escape_string($str) ."%'"; 

這是關於escape string的文檔。

0

你可以嘗試:

SELECT DISTINCT t1,*, t2.* 
FROM table1 t1 INNER JOIN table2 t2 
ON t1.id = t2.table1_id 
WHERE 
    table1.name LIKE '%$str%' OR 
    table1.last_name LIKE '%$str%'