Проверка Mysql, если столбец имеет значения на основе другого столбца - PullRequest
0 голосов
/ 17 сентября 2018

Я использую PDO для обработки своей базы данных, и у меня есть одна таблица:

Table:
id    sku    category
1     XYZ    Ballerinas
2            Ballerinas
3            Ballerinas
4     ABC    Ballerinas

Как вы можете видеть, у меня есть 4 строк, которые находятся в той же категории Ballerinas, но двеиз них нет sku.Как я могу вернуть эти строки, используя запрос pdo, только если все Ballerinas имеют sku?

Спасибо!: D

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Или вы можете сделать это без объединения:

SELECT *
FROM Table1 t1
WHERE NOT EXISTS (SELECT 1 FROM Table1 t2 WHERE t1.category = t2.category AND t2.sku IS NULL);

Если вы рассматриваете пустые значения ('') также как «не являющиеся значением», тогда условие в предложении exists должно быть

where t2.category=t1.category and not t2.SKU>''
0 голосов
/ 17 сентября 2018

Один из вариантов поиска подходящих категорий - агрегирование по категориям, а затем утверждение, что общее количество соответствует количеству sku значений, которые не пустая строка. Если эти два показателя совпадают, сохраните эту категорию.

SELECT t1.*
FROM yourTable t1
INNER JOIN
(
    SELECT category
    FROM yourTable
    GROUP BY category
    HAVING COUNT(*) = COUNT(CASE WHEN sku <> '' THEN 1 END)
) t2
    ON t1.category = t2.category;

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...