Autor Zpráva
PetraPP
Profil
Potřebovala bych udělat výpis jmen podle kategorii a kategorie seřadit podle pořadí. Jak bude vypadat mySQL dotaz?

jmena
id
kategorie_id
nazev
platnost_od
platnost_do

kategorie
id
nazev
poradi
lionel messi
Profil
Treba použiť JOIN. Asi nejako takto (môže tam byť chyba, píšem z hlavy, keby niečo nefungovalo, ozvite sa, ja alebo kolegovia doladíme):

SELECT * FROM `jmena` JOIN `kategorie` ON `kategorie_id` = `id` ORDER BY `poradi`

Zechy riešenie doplnil.
Zechy
Profil
lionel messi:
SELECT * FROM `jmena` JOIN `kategorie` ON (`kategorie_id` = `kategorie`.`id`) ORDER BY `poradi`

Nejednoznačný sloupec ID - Dotaz by nevěděl, jestli má vzít id z jména nebo kategorie.

EDIT: Případně se dají použít aliasy tabulek, sloupce z určitých tabulek se pak dají vybírat "snáze" než rozepisovat názvy tabulek.
SELECT * FROM `jmena` j JOIN `kategorie` k ON (`kategorie_id` = k.`id`) ORDER BY `poradi`
lionel messi
Profil
Zechy:
Vďaka za doplnenie.
PetraPP
Profil
Potřebovala bych i vypsat, kolik je jmen v kategorii, ale potřebuji vypsat všechny kategorie bez rozdílu, jestli je tam počet jmen 0 nebo 100. Když tam dosadím count, tak dostanu chybu :(
MySQL error: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Zechy
Profil
PetraPP:
A jak ten dotaz vypadá?
Tori
Profil
PetraPP:
Potřebovala bych udělat výpis jmen podle kategorii
vs.
Potřebovala bych i vypsat, kolik je jmen v kategorii, ale potřebuji vypsat všechny kategorie

Takže chcete vypsat všechna jména, k nim kategorie, a ke kategoriím počet jmen?
Anebo chcete vypsat kategorie a k nim počet jmen (ale ne přímo jednotlivá jména)?
PetraPP
Profil
Potřebuji vypsat kategorie a k nim počet jmen.
Tori
Profil
Tak je potřeba seskupit záznamy podle ID kategorie.
PetraPP
Profil
Moc tomu nerozumím :( Jaký by tedy byl mySQL dotaz na to, co potřebuji?
Kajman
Profil
SELECT k.*, count(j.`kategorie_id`) jmen
FROM   `jmena` j
RIGHT  JOIN `kategorie` k
       ON j.`kategorie_id` = k.`id`
GROUP  BY k.`id`
ORDER  BY k.`poradi`

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