Я использую PDO
для обработки моей базы данных, и у меня есть одна таблица:
Table:
id sku category
1 XYZ Ballerinas
2 Ballerinas
3 Ballerinas
4 ABC Ballerinas
Как вы можете видеть, у меня есть 4
ряда, которые находятся в одной и той же категории Ballerinas
но у двух из них нет sku
. Как я могу вернуть эти строки, используя запрос pdo, только если все Ballerinas
имеют sku
?
Спасибо! : D
Один из вариантов поиска совпадающих категорий - агрегировать по категориям, а затем утверждать, что общий счетчик соответствует количеству значений 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;
EXISTS
. Либо должно быть хорошо для вас.
Или вы можете сделать это без участия:
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>''
t1.
), Поскольку для вывода доступна только одна таблица.
null
значение или пустое значение? какое значение по умолчанию для этого столбца?sku = ''