хитрый запрос SELECT

.des.

Поставил пиво кому надо ;-)
2 tf - сдаюсь. Я уже не знаю как объяснить. Вы по-моему не читаете, что Вам пишут.

Лишь одна просьба.
Не надо приводить неправильных решений. Не знаете - не отвечайте.
 

Corvin

Новичок
2 Steamroller: запрос работает, но только на 2 AND'a, a sup может быть сколько угодно sup='11' AND sup='18' AND sup='11'....

2 .des. : вот это универсальный запрос! Спасибо! Можно к нему еще как-то добавить NOT IN?

тоесть типа:
SELECT cat FROM tbl WHERE sup IN (11,18,21,16) AND sup NOT IN (2,5,19) GROUP BY cat HAVING COUNT(*) = 4;

но так, чтобы работало? :)
 

chira

Новичок
Corvin
похоже без LEFT JOIN или вложенного селекта не обойтись
Код:
SELECT t1.cat 
FROM tbl t1
  LEFT JOIN tbl t2 ON t1.cat=t2.cat AND t2.sup IN (2,5,19)
WHERE t1.sup IN (11,18,21,16) AND t2.id IS NULL 
GROUP BY t1.cat HAVING COUNT(*) = 4;
 

Steamroller

Новичок
2 Steamroller: запрос работает, но только на 2 AND'a, a sup может быть сколько угодно sup='11' AND sup='18' AND sup='11'....
Ну так конструируй по аналогии:
select straight_join distinct t1.cat from table t1, table t2, table t3, table t4 ......... where t1.sup='11' and t2.sup='18' and t3.sup='58' and t4.sup='92' and t1.cat=t2.cat and t1.cat=t3.cat and t1.cat=t4.cat ...;
 

.des.

Поставил пиво кому надо ;-)
Код:
SELECT cat 
FROM tbl 
GROUP BY cat 
HAVING SUM(IF(sup IN (11,18,21,16,2,5,19), IF(sup IN (2,5,19), -1, 1), 0))=4;
работает только если сочетание (cat, sup) уникально... но судя по всему в этой модели так и должно быть :)
 

tf

крылья рулят
2 .des. не стоит так сразу сдаватся. я все понял. хоть позно но понял.
 

Oduvanchik

Guest
tf, ты глуп, смирись.
Steamroller и .des. предложили два верных решения.
 

tf

крылья рулят
Oduvanchik мы что тут ругатся собрались.
мирится ты будеш в смирительной рубашке на кутузовской смотря на стенку возле бани
явно не то и ни с тем и ни о том. ты сам понял к чему ты это написал?
 
Сверху