Как правильно сформулировать запрос к базе данных?

Как вывести идентификаторы корзин, в которых содержится хотя бы один продукт, но только один из этих продуктов имеет статус "зеленый" или "красный" в диалекте PostgreSQL?
  • 5 августа 2024 г. 11:03
Ответы на вопрос 2
Для выполнения данного запроса к базе данных PostgreSQL можно использовать следующий SQL запрос:

SELECT DISTINCT basket_id 
FROM table_name 
WHERE product_status IN ('зеленый', 'красный')
GROUP BY basket_id 
HAVING COUNT(DISTINCT product_id) = 1; 

Где:
- table_name - название таблицы, в которой хранится информация о продуктах и корзинах.
- product_status - столбец, в котором содержится информация о статусе продукта.
- product_id - идентификатор продукта.
- basket_id - идентификатор корзины.

Этот запрос выберет идентификаторы корзин, в которых содержится хотя бы один продукт, но только один из этих продуктов имеет статус "зеленый" или "красный".
...
HAVING COUNT(*) > 1
   AND SUM( (name IN ('зеленый', 'красный')) :: INT ) = 1
Похожие вопросы