|
|
|
| Почему такой запрос выдает излишние данные (в таблице 1 строка совпадения, а в результате 42)
"SELECT
events.title, events.content, events.place, events.description,
instans.name, instans.description, instans.adres, instans.phone,
jobs.name,
stock.name, stock.organizator, stock.rules, stock.description
FROM events, instans, jobs, reports, stock
WHERE events.title LIKE '%".$search_word."%' OR
events.content LIKE '%".$search_word."%'
|
" | |
|
|
|
|
|
|
|
для: OLi
(03.11.2012 в 16:51)
| | Поиск по нескольким таблицам. Вопрос еще в том, как вывести это результат? заведомо не известно в какой таблице, в каком поле будет найдено совпадение; как определить, какие поля выводить во view | |
|
|
|
|
|
|
|
для: OLi
(03.11.2012 в 16:55)
| | Порылся на форуме, нашел тему
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=68090
Говорят UNION юзать, но для операции объединения, насколько я знаю, необходимо условие равного числа доменов объединяемых таблиц и совпадение их имен, что в моем случае не соблюдается. | |
|
|
|
|
|
|
|
для: OLi
(03.11.2012 в 17:57)
| | В моем случае, тогда нужно делать отдельные запросы, с переименованием полей для каждой таблицы (title, description и тд), а потом объединять массивы результата в один и выводить. Но здесь решается лишь проблема не совпадения имен полей таблицы. | |
|
|
|
|
|
|
|
для: OLi
(03.11.2012 в 18:01)
| | Вопрос сейчас сводится вот к чему:
Пусть первый запрос вернул поля Name, desciption, rules
Второй: Name, description, rules
Третий: Name, phone, organizator
___________________
Объединяя эти массива результатов сталкиваемся с проблемой на выводе массива: потому как поля phone, organizator не были найдены в 2-ъ предыдущей запросах.
Как сделать, чтобы если они не были найдены в других таблицах, то делать их NULL | |
|
|
|
|
|
|
|
для: OLi
(03.11.2012 в 18:13)
| | Вы бы эти три запроса показали?
Да и структуру таблиц не плохо было бы.
И словами описать, что вам нужно получить из этих таблиц.
А то пока ниче не понятно. | |
|
|
|
|
|
|
|
для: OLi
(03.11.2012 в 16:51)
| | Так вы группируйте данные по нужному вам полю при помощи GROUP BY или вместо запятой используйте LEFT JOIN и условие объединение таблиц ON или USING. | |
|
|
|
|
|
|
|
для: cheops
(03.11.2012 в 18:45)
| | Как произвести группировку по полю, если его нету в таблице? Все остальные поля совпадают по имени. Разница лишь в двух полях. | |
|
|
|
|
|
|
|
для: OLi
(03.11.2012 в 19:03)
| | А цель запроса какая? Как связаны эти таблицы друг с другом? | |
|
|
|
|
|
|
|
для: OLi
(03.11.2012 в 16:51)
| | CROSS JOIN пяти таблиц?... Надеюсь они не большие? Иначе я сочувствую серверу. | |
|
|
|