Я пытаюсь создать сетку доступности из нескольких таблиц, чтобы представить информацию следующим образом:
------------------------------------------------------
venue | 22/11 | 23/11 | 24/11 | 25/11 | 26/11 |
------------------------------------------------------
Some venue | £24 | £25 | £32 | N/A | £65 |
------------------------------------------------------
Some venue | £20 | N/A | £22 | £34 | £43 |
-------------------------------------------------------
Для каждого места я могу создать набор записей для выбранного периода даты, используя запрос, такой как:
SELECT temp_date.queryDate, availability.venueId
FROM temp_date
LEFT JOIN availability
ON temp_date.queryDate = availability.date
AND availability.venueId = 7
GROUP BY temp_date.queryDate
ORDER BY temp_date.queryDate;
Ключевым моментом здесь является то, что я могу вернуть нулевое значение для любых дат, которые недоступны, сохраняя при этом мой набор записей на правильное количество дней (т.е. 5 записей для рабочей недели).
Чтобы добавить все остальные места в этот список, я рассматривал простое использование запроса UNION для объединения наборов данных в один, например, так:
(SELECT temp_date.queryDate, availability.venueId
FROM temp_date
LEFT JOIN availability
ON temp_date.queryDate = availability.date
AND availability.venueId = 7
GROUP BY temp_date.queryDate
ORDER BY temp_date.queryDate)
UNION
(SELECT temp_date.queryDate, availability.venueId
FROM temp_date
LEFT JOIN availability
ON temp_date.queryDate = availability.date
AND availability.venueId = 8
GROUP BY temp_date.queryDate
ORDER BY temp_date.queryDate);
Меня беспокоит, скажем, 10 различных мест, к которым можно было бы обратиться, тогда запрос может пройти довольно долго.
Итак, мой вопрос заключается в следующем: является ли запрос UNION моей единственной опцией здесь или есть какой-то альтернативный JOIN, который я могу использовать, чтобы получить полные недели результатов для всех запрашиваемых мест.
Надеюсь, это понятно: -S
EDIT:
Чтобы указать, что я хочу, ниже приведены скриншоты требуемого набора записей и текущего запроса:
![alt text](https://i.stack.imgur.com/NOPVT.jpg)
![alt text](https://i.stack.imgur.com/qSFYo.jpg)
Использование IN () как предложено:
![alt text](https://i.stack.imgur.com/ecTTg.jpg)