У меня есть две таблицы (requests и requests_details), как показано ниже. Таблица requests содержит request_id и имя запроса, а requests_details содержит подробную информацию о том, находится ли запрос в ожидании, одобрен или отклонен. Я реализовал приведенные ниже две таблицы в сопоставлении один ко многим, используя Spring JPA. В таблице requests_details, если есть вторая запись, кроме статуса PENDING для запроса, это означает, что из статуса мы можем узнать, одобрен ли запрос или отклонен.
Теперь у меня есть требование получать все ожидающие и утвержденные запросы отдельно.
Я написал запрос hql, как показано ниже.
Для получения всех ожидающих запросов
SELECT request.name, details.*
FROM requests request JOIN request_details details ON request.request_id=details.request_id
WHERE
details.status = "PENDING" AND
details.status !="APPROVED" OR details.status !="REJECTED"
но для приведенного выше запроса он возвращает все запросы
Для получения всех одобренных запросов
SELECT request.name, details.*
FROM requests request JOIN request_details details ON request.request_id=details.request_id
WHERE
details.status = "PENDING" AND
details.status ="APPROVED"
но для приведенного выше запроса он не возвращает никаких запросов
Мой ожидаемый результат, как показано ниже
Может ли кто-нибудь помочь мне в этом
details.status = "PENDING" AND details.status ="APPROVED"
, очевидно, невозможно удовлетворить, аdetails.status = "PENDING" AND details.status !="APPROVED" OR details.status !="REJECTED"
эквивалентно(details.status = "PENDING" AND details.status !="APPROVED") OR details.status !="REJECTED"
эквивалентноdetails.status = "PENDING" OR details.status !="REJECTED"
эквивалентноdetails.status !="REJECTED"
, которое удовлетворяется всеми строками в данном примере данных. - person Jens Schauder   schedule 06.02.2019