#mysql #sql #join #sql-view
#mysql #sql #Присоединиться #sql-просмотр
Вопрос:
У меня есть этот sql-запрос, который находит текущее состояние EquipmentItem путем перекрестной ссылки на таблицу EquipmentItemReservations:
SELECT EI.Id, ER.ReservationType AS Status
FROM EquipmentItems AS EI
INNER JOIN EquipmentItemReservations AS ER ON EI.Id = ER.EquipmentItemId
WHERE IsApproved = 1
AND DateShipped IS NOT NULL
AND DateReturned IS NULL
Таблица резервирования имеет тип резервирования либо «Назначенный», либо «Выделенный», который отображается как «статус», где это применимо.
Я хотел бы расширить этот запрос, чтобы получить элементы оборудования, которые не соответствуют требованиям, и установить «Доступно» в качестве статуса для остальных элементов.
Моя цель — иметь полный список элементов с включенным их статусом («Назначено», «Выделено» или «Доступно»)
Комментарии:
1. пожалуйста, предоставьте образец данных и желаемый результат
Ответ №1:
Я смог добиться этого с помощью этого запроса (сделал его представлением SQL).:
CREATE VIEW view_EquipmentItemStates AS
SELECT EI.Id, ER.ReservationType AS Status
FROM EquipmentItems AS EI LEFT JOIN EquipmentItemReservations AS ER
ON EI.Id = ER.EquipmentItemId
WHERE IsApproved = 1 AND DateShipped IS NOT NULL AND DateReturned IS NULL
UNION SELECT EquipmentItems.Id, 'Available' As Status
FROM EquipmentItems WHERE EquipmentItems.Id NOT IN (
SELECT EI.Id FROM EquipmentItems AS EI LEFT JOIN EquipmentItemReservations AS ER
ON EI.Id = ER.EquipmentItemIdWHERE IsApproved = 1 AND DateShipped IS NOT NULL
AND DateReturned IS NULL)