Выберите группы строк только с указанным значением c? - PullRequest
0 голосов
/ 24 марта 2020

Я хочу выбрать строки группы товаров по product_group_id, для которых только имеет is_shown = 1.

Product Table
+----+------------------+---------+----------+
| id | product_group_id |   name  | is_shown |
+----+------------------+---------+----------+
| 1  |        1         |  apple  |     1    |
| 2  |        1         |  orange |     1    |
| 3  |        1         |  kiwi   |     0    |
| 4  |        2         |  table  |     1    |
+----+------------------+---------+----------+

Мой sql оператор равен

SELECT * FROM product WHERE is_shown = 1 GROUP BY product_group_id

Что мне нужно, так это строки, которые только имеют is_shown = 1.

Итак, мой ожидаемый результат - я получу только строку

Product Table
+----+------------------+---------+----------+
| id | product_group_id |   name  | is_shown |
+----+------------------+---------+----------+
| 4  |        2         |  table  |     1    |
+----+------------------+---------+----------+

Купить Я все еще получаю product_group_id = 1.

Пожалуйста, помогите. Спасибо

Ответы [ 3 ]

0 голосов
/ 24 марта 2020

Затем просто исключите их:

SELECT
    *
FROM
    Product
WHERE 
    product_group_id NOT IN (
        SELECT
            product_group_id
        FROM
            Product
        WHERE
            is_shown = 0
    )

Выберите все продукты , кроме , product_group_id, которые имеют is_shown =0.

0 голосов
/ 24 марта 2020

Надеюсь, что это полезно ...

SELECT
  * 
FROM
  Product 
WHERE
  product_group_id NOT IN ( 
    SELECT
      product_group_id 
    FROM
      Product 
    WHERE
      is_shown != 1
  ) 
GROUP BY
  product_group_id
0 голосов
/ 24 марта 2020

Для этого вы можете использовать подзапрос.
Получить все product_group_id и использовать его для фильтрации строк.

SELECT 
  * 
FROM
  Products 
WHERE 
  product_group_id IN 
  (
    SELECT 
      product_group_id 
    FROM 
      Products 
    GROUP BY
      product_group_id 
    HAVING 
      min(is_shown) = 1
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...