SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.05.2012 15:20:52

barclayard
Участник
Зарегистрирован: 17.01.2012
Сообщений: 5

Не могу правильно сделать запрос выборки с подключением таблиц

Имеется 3 таблицы:
1 (places) - содержит уникальный id записи,
2 (tags_title) - содержит свой id и имя (title),
3 (tags_plc) - содержит в первом столбце id таблицы places (pid) и id таблицы tags_title (tid)

Имеется фраза из формы, по этой фразе нужно найти id тега - tags_title.id, у которого tags_title.title = фразе из формы, далее в таблице tags_plc найти tags_plc.pid, у которого tags_plc.tid = tags_title.id, которые нашли до этого, далее вытащить из places id = tahs_plc.tid, найденные ранее
это я реализовал вот так:


SELECT
places.id
FROM
places
INNER JOIN tags_plc ON tags_plc.pid = places.id
INNER JOIN tags_title ON tags_title.id = tags_plc.tid
WHERE
tags_title.`title` LIKE '%".$_POST['search']."%'
GROUP BY tags_plc.pid

- все замечательно работает, как и нужно, но мне необходимо еще одно условие поиска
помимо
WHERE
tags_title.`title` LIKE '%".$_POST['search']."%'

нужно условие

WHERE
tags_title.`title` LIKE '%".$_POST['search']."%' OR places.`title` LIKE  '%".$_POST['search']."%'
 

т.е. нужно чтобы поиск был по двум условиям:  по полю places.title и по tags_title.title

проблема в том, что в данном случае он ищет, но у меня в таблице places не все поля имеют связи с таблицей tags_plc, поэтому эти строки он не затрагивает


Как правильно построить запрос?

Попробовал такой запрос:

SELECT * FROM places WHERE id =
(SELECT
tags_plc.pid
FROM
tags_plc
INNER JOIN tags_title ON tags_title.id = tags_plc.tid
WHERE
tags_title.`title` LIKE '%".$_POST['search']."%'
GROUP BY tags_plc.pid)
 

если более 1 результата, то ошибку выдает.
В общем, помогите запрос сделать правильный )

ps. если совсем вкратце, то нужно, чтобы

Отредактированно barclayard (11.05.2012 15:47:15)

Неактивен

 

#2 11.05.2012 17:33:51

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не могу правильно сделать запрос выборки с подключением таблиц

SELECT
places.id
FROM
places
LEFT JOIN tags_plc ON tags_plc.pid = places.id
INNER JOIN tags_title ON tags_title.id = tags_plc.tid
WHERE
tags_title.`title` LIKE '%".$_POST['search']."%' OR places.`title` LIKE  '%".$_POST['search']."%'
GROUP BY places.id;


Если нет, то приведите пример данных на 10 строчек, иллюстрирующий проблему, а то не очень ясно о чем идет речь.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson