Имеется 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)