Autor Zpráva
Cup
Profil
Mám tabulky ...

Kraj (idKraj, nazevKraj)
Mesto(idMesto, idKraj, nazevMesto)
Skola(idSkola, idMesto, nazevSkola)
Trida(idTrida, idSkola, nazevTrida)

zajímají mě dvě věci ... jestli mi to stačí k získání všech potřebnách dat z tabulek .... jesli jsem schopný si jednoduše zjistit například v kterém kraji je třída s ID 98 (příklad) ... nebo jestli mám strukturu celou upravit rovnou ... že například do tabulky trida přídám ještě sloupce s id města a kraje ... a podle nich si pak budu tahat data ... nebo jestli to takhle stačí abych se ke všemu dostal ...


no a druhá věc, když mám tabulku poskládanou takto, jak vypíšu buď
Název kraje, počet měst v kraji, počet škol v kraji, počet tříd v kraji ... pod sebou ?

když by to nešlo tak alespoň Název kraje , počet tříd v kraji,

když by nešlo ani toto, což by ale mělo jít(doufám... dle mých dosavadních znalostí) tak asi upravit strukturu databáze.

Poradil by někdo kdo má se SQL více zkušeností? Díky
tiso
Profil
1. áno, stačí to
2. Asi cez union:

SELECT nazevKraj, 'měst' co, COUNT(idMesto) pocet FROM Kraj
JOIN Mesto USING(idKraj) 
WHERE Kraj.nazevKraj='středočeský' GROUP BY Kraj.idKraj
UNION
SELECT nazevKraj, 'škol' co, COUNT(idSkola) pocet FROM Kraj 
JOIN Mesto USING(idKraj) 
JOIN Skola USING(idMesto) 
WHERE Kraj.nazevKraj='středočeský' GROUP BY Kraj.idKraj
UNION
SELECT nazevKraj, 'tříd' co, COUNT(idTrida) pocet FROM Kraj 
JOIN Mesto USING(idKraj) 
JOIN Skola USING(idMesto) 
JOIN Trida USING(idSkola) 
WHERE Kraj.nazevKraj='středočeský' GROUP BY Kraj.idKraj
Kajman_
Profil *
2
SELECT k.nazevKraj,
       COUNT(t.idTrida) trid,
       COUNT(DISTINCT s.idSkola) skol,
       COUNT(DISTINCT m.idMesto) mest
FROM   Kraj k
LEFT JOIN Mesto m USING  (idKraj)
LEFT JOIN Skola s USING  (idMesto)
LEFT JOIN Trida t USING  (idSkola)
GROUP  BY k.idKraj, k.nazevKraj
tiso
Profil
Kajman: sakra, ten distinct mi tam nenapadol, asi som už spal...

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: