Виталий Бохин
953 сообщения
#3 года назад
Приветствую всех. Подскажите или возможно объединить несколько запросов SELECT в один? Таблицы никак не связаны, нет необходимости их связывать, нужно просто получить данные из двух разных таблиц, как есть, из одной и из другой. Выполняется два отдельных запроса:
SELECT * FROM analytics WHERE id = 21

SELECT * FROM reports WHERE analytics_id = 55 AND view = true

Получается два запроса. Есть ли возможность сделать это в одном запросе, типо сократить количество обращений к бд? А результат просто записать в разные массивы? например как-то так
SELECT * FROM analytics WHERE id = 21, SELECT * FROM reports WHERE analytics_id = 55 AND view = true

// result: , tb_reports => ]
Сергей Глушко
834 сообщения
#3 года назад
Подобный запрос имеет смысл объединить JOIN только в том случае если reports.analytics_id = analytics.id

Если это не так, нету смысла. skip-network и все дела)) Если жалко запросы пускать
Вообще важно не количество запросов, а качество) Битрикс за одно открытие может пульнут около 3 тыс запросов, и при этом летать как самолет)
Но конечно же максимально сокращать)
Виталий Бохин
953 сообщения
#3 года назад
micros, reports.analytics_id равен analytics.id, но мне не нужно получать одну результирующую таблицу (JOIN), а отдельно. Есть места, где идут SELECT запросы разных таблиц, один за другим, и я подумал, возможно ли склеить их в один? Видимо невозможно, в такой ситуации.
Игорь З.
5 сообщений
#3 года назад
lufter,Вы не правильно ставите вопрос. Нужно думать для чего это нужно, а не как. И тогда вы поймете, что в вашем случае нет в этом необходимости никакой.
А вообще запросы можно объединить через UNION, но если нужно раскидать по разным массивам в итоге, то все равно придется делать обработку данных, но уже не на уровне БД, а выше. И тогда возникает вопрос "зачем это нужно?"