Мне нужно выполнить поиск строки в 18 отдельных таблицах SQL. Поиск будет осуществляться в полях с разными именами и в нескольких полях в некоторых таблицах.
Хотя я могу добиться этого с помощью чего-то вроде приведенного ниже (первые 2 таблицы), я чувствую, что после объединения всех 18 таблиц код станет очень громоздким.
Есть ли способ уточнить этот код?
Также, когда будет предоставлен результат, могу ли я узнать с помощью PHP, из какой таблицы был получен ответ?
mysql_query("SELECT a.about,b.title,b.article,b.description
FROM about a
JOIN articles b ON b.user=a.user
WHERE (upper(a.about) LIKE'%".$val."%') OR (upper(b.title) LIKE'%".$val."%') OR (upper(b.article) LIKE'%".$val."%') OR (upper(b.descirption) LIKE'%".$val."%') ORDER BY $order $max");
2 ответа
Используйте UNION
SELECT about from some WHERE about like '%some%'
UNION
SELECT about from some_other WHERE about like '%some%'
И если вы хотите разрешить повторяющиеся результаты, используйте UNION ALL
Взгляните на операцию UNION
.
select x from table_1 where blabla
union
select y from table_2 where blabla
И так далее.
x
и y
должны быть одного формата.
Похожие вопросы
Новые вопросы
php
PHP — это открытый, мультипарадигмальный, динамически типизированный и интерпретируемый язык сценариев, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.