У меня есть база данных сертификатов SSL, которая обновляется один раз в месяц. Я хочу выполнить SQL-запрос для получения всех записей в моей базе данных только с августа , когда дата окончания срока действия сертификата и компания, купившая сертификат, соответствуют предыдущему месяцу.
Для простоты представьте, что схема базы данных выглядит следующим образом:
Subject Organisation | Issued Date | Expiry Date | Issuing Company | Month | Year
То, что я до сих пор придумал, немного сбивает с толку, поскольку я создал новую таблицу, которая просто содержит данные за август. Если вы знаете способ сделать это без создания таблицы, это было бы лучше. Приведенный ниже запрос выдает ошибку, указывающую, что более одной строки, возвращенной подзапросом, использовалось в качестве выражения.
SELECT *
FROM AugustTable
WHERE
"Subject Organisation" = (SELECT
"Subject Organisation"
FROM AllCertsTable
WHERE ("Month" != 'August' AND "Year" != '2018')
)
AND
"Expiry" = (SELECT
"Expiry"
FROM AllCertsTable
WHERE ("Month" != 'August' AND "Year" != '2018')
)
Работает следующий вид запроса, но мне нужны только данные за август или август + все остальные данные, добавленные снизу вместо объединения столбцов из каждого отношения.
SELECT *
FROM AllCertsTable AS A
INNER JOIN August AS B
ON (A."Subject Organisation" = B."Subject Organisation"
AND
A."Valid To" = B."Valid To"
AND
A."Issuing Company" = 'XYZ'
)