[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: поисковое поле, с поиском по двум полям разн. табл
vovan1409
Задача: Сделать поисковое поле (по типу яндекса), с поиском по двум полям из разных таблиц.
Вопрос: как правиль спроектировать запрос в БД?
Есть три таблицы:
1)people (id_people, id_name, surname)
2)name (id_name,name)
3)pnick(есть не у всех) (id_people, nick)
Вот рабочий запрос, только Фамилии(surname):
SELECT p1.peopleid, p1.surname, n1.name, n2.nick
FROM people p1
INNER JOIN name n1 ON p1.surname LIKE '$queryString%' and p1.nameid=n1.nameid
LEFT JOIN pnick n2 ON p1.peopleid=n2.peopleid
ORDER BY p1.surname, n1.name;

, где $queryString - строка введенное в поисковое поле
Какие мысли есть по поводу одновременного поиска по двум полям: people.surname и pnick.nick?
bestxp
SELECT p1.peopleid, p1.surname, n1.name, n2.nick
FROM people p1
INNER JOIN name n1 ON p1.nameid=n1.nameid
LEFT JOIN pnick n2 ON p1.peopleid=n2.peopleid

p1.surname LIKE '$queryString%' OR n2 .nick LIKE '$queryString%'

ORDER BY p1.surname, n1.name
vovan1409
Цитата (bestxp @ 3.03.2013 - 21:54)
SELECT p1.peopleid, p1.surname, n1.name, n2.nick
FROM people p1
INNER JOIN name n1 ON p1.nameid=n1.nameid
LEFT JOIN pnick n2 ON p1.peopleid=n2.peopleid

p1.surname LIKE '$queryString%' OR n2 .nick LIKE '$queryString%'

ORDER BY p1.surname, n1.name

Ну как я понимаю, строка:
p1.surname LIKE '$queryString%' OR n2 .nick LIKE '$queryString%'

Относится ко второму объединению табл. people и pnick, но если вы внимательно прочтете мое первое сообщение, то от туда видно, что эти данные из разных табл. и их точно нельзя впихивать в один JOIN.
Короче, я на всякий случай попробовал, НЕ РАБОТАЕТ
bestxp
ну тогда UNION тебе в помощь, как поставлен вопрос так и ответ
так как обе твои таблицы фигурируют в одной выборке
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.