2011-08-10 3 views
2

Я надеялся, что смогу помочь с запросом, который я пытаюсь выяснить. Наш интернет-магазин должен знать, когда все варианты продукта находятся в нулевом количестве, поэтому мы можем отключить продукт с точки зрения клиента. Таблица, с которой я работаю, - это только таблица вариантов.MYSQL QUERY для продуктов и вариантов

мы будем называть его cart_variants

| variantid | productid | avail | 
| 5677  | 1310 | 0 | 
| 5399  | 1310 | 2 | 
| 5228  | 1223 | 0 | 
| 5133  | 1223 | 0 | 

Мне нужно, чтобы вернуть все productids кто есть вариант величина равна нуль. Идентификаторы продуктов могут иметь любое количество вариантов. В приведенном выше примере запрос возвращался бы только productid 1223.

Я уверен, что это не очень сложный запрос, но он, несомненно, ударил меня ногой. Как близко, как я был в состоянии прийти было:

SELECT productid, SUM(avail)as qty FROM 'cart_variants' GROUP BY productid 

Это дает мне список всех продуктов и их qtys, но я не могу понять, как получить его в временную таблицу и запросить ProductID с Qty = 0.

Большинство примеров, работающих с временными таблицами и выборными запросами, не очень ясны. Я пробовал несколько воплощений, и никто из них не работал до конца.

Любая помощь приветствуется.

ответ

1

Предполагая, что вы никогда не иметь отрицательное avail значения, вам действительно нужно только применить пункт HAVING к вашему запросу:

SELECT c.productid 
    FROM cart_variants c 
    GROUP BY c.productid 
    HAVING SUM(c.avail) = 0 
+0

Я добавил ИНЕК, чтобы проверить таблицу продуктов, чтобы убедиться, что продукт линия не была отключена, и она работает как шарм. Большое спасибо. Я подозревал, что ответ будет проще, чем я пытался это сделать. – Miek

Смежные вопросы