Autor Zpráva
Casper
Profil
Dobrý den, řeším problém s tabulkou (zjednodušeně takováto: viz obrázek tabulky). Kde se snažím zjistit počet unikátních řádků sloupce3 v rámci stejných hodnot sloupce2. Výběr je následující:
SELECT t.*, c.pocet
FROM tabulka t
LEFT JOIN (SELECT tb.sloupec3, COUNT(DISTINCT sloupec3) pocet FROM tabulka tb  GROUP BY tb.sloupec2) c ON t.sloupec3=c.sloupec3


Tím získám potřebnou hodnotu výskytu distinktivích hodnot 3sloupce v rámci druhého, avšak pouze u první skupiny sloupce3 (viz obrázek) na kterou výběr v db narazí - logicky kvůli GROUP BY sloupec2. (na obrázku již řazeno, proto není vždy u prvního výsledku ve skupině). Potřebuji však tento výsledek získat u všech řádků tabulky, nevím však jak toho dosáhnout, našel by se někdo ochotný s radou jak na to? Předem díky

P.S. tabulka i výběr jsou osekané, snad je to z toho pochopitelné...
Kajman_
Profil *
Nechcete to spojovat podle sloupec2? Takhle to vůbec nedává smysl a v jiných databázích by to ani nešlo spustit.
Casper
Profil
Skutečně spojení podle sloupce2 vyřešilo můj problém, děkuji za radu. Ovšem moc nechápu, proč je to nutné spojovat právě podle tohoto sloupce, proč by to (v jiných db) nefungovalo podle sloupce3 a proč tedy mysql vyhodí výběr jaký vyhodí. Mohl byste mi problém přiblížit? Pravděpodobně mi chybí nějaká základní znalost o spojování tabulek předpokládám...
TomášK
Profil
Jiné databáze povolují vybrat v SELECTu s GROUP BY pouze sloupce, na které jsou použité agregační funkce (COUNT, MAX, MIN), nebo sloupce, které jsou v klauzuli GROUP BY. MySQL povoluje vybrat i jakýkoliv jiný sloupec, vezme se hodnota náhodného záznamu v dané skupině.
Casper
Profil
TomášK děkuji za vysvětlení...

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: