Mysql присоединиться, чтобы отобразить только уникальные идентификаторы - PullRequest
0 голосов
/ 13 октября 2011

Я пытаюсь использовать SQL-запрос, но я получаю несколько раз один и тот же результат.

Я прочитал, что мне нужно использовать ВНУТРЕННЕЕ СОЕДИНЕНИЕ или ЛЕВОЕ СОЕДИНЕНИЕ, чтобы избежать этого. Единственная проблема в том, что я немного новичок в MySQL, поэтому я не могу сделать успешный запрос.

Запрос такой

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

$str - это строка, которую я передаю в функцию php для поиска.

Ответы [ 2 ]

0 голосов
/ 13 октября 2011

Вы можете попробовать:

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%'
0 голосов
/ 13 октября 2011

Вам необходимо объединить эти две таблицы.

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

Вы также должны защитить от внедрения SQL, используя mysql_real_escape_string.

$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-строка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...