Autor Zpráva
Misha
Profil *
Ahoj, potřebuji z tabulky dostat počet produktů, ale vypisuje mi to špatnou hodnotu a už si s tím nevím rady.

Mám tabulku "produkty":
+----+------------+
| id | nazev      |
+----+------------+
| 1  | Auto       |
| 2  | Konvice    |
| 3  | Koloběžka  |
| 4  | Rum        |
+----+------------+
a tabulku "produkty_barvy":
+----+---------+-----------+
| id | produkt | barva     |
+----+---------+-----------+
| 1  | 1       | zelená    |
| 2  | 3       | černá     |
| 3  | 1       | černá     |
| 4  | 1       | modrá     |
+----+---------+-----------+

Dále mám tenhle příkaz:
SELECT COUNT(*)
  FROM `produkty`,`produkty_barvy`
  WHERE (`produkty`.`id`=`produkty_barvy`.`produkt` && (`produkty_barvy`.`barva`='zelená' || `produkty_barvy`.`barva`='černá'));

Doplnění GROUP BY `produkty`.`id` funguje pro výpis produktů, ale ne pro získání počtu pomocí COUNT.

V tomhle případě (viz tabulky) mi to vypíše číslo 3 (počítá počet řádků s barvou jenž vyhovují), jenže já potřebuji jen produkty, které vyhovují, takže požadované číslo je 2.

Předem díky za všechny rady.
juriad
Profil
prostě přidej další patro:
SELECT Count(*)
FROM   (SELECT `produkty`.`id`
        FROM   `produkty`
               JOIN `produkty_barvy`
                 ON `produkty`.`id` = `produkty_barvy`.`produkt`
        WHERE  `produkty_barvy`.`barva` IN ( 'zelená', 'černá' )
        GROUP  BY `produkty`.`id`) pid  
Kajman
Profil
Je možné použít i distinct v agregační funkci
SELECT COUNT(distinct `produkty_barvy`.`produkt`) ... 

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0