Autor Zpráva
Mik
Profil *
Dobrý den, potřeboval bych poradit s propojením tabulek. mám takovouhle databázi:
firmy
IDfirmy | Nazev | Adresa
---------------------------------
1            Firma1   Praha
2            Firma2   Brno


pobocky
IDpobocky | IDfirmy | Adresa
------------------------------------
1                 1             Praha 4
2                 1             Praha 8
3                 2             Brno

zamestnanci
IDzamestnanec | IDpobocky | Jmeno | Prijmeni
1                          1                  Karel     Novak
2                          1                  Jirka      Novy
3                          3                  Jana      Hezka


A tedka bych chtěl udělat výpis všech poboček se počtem jejich zaměstnanců určité firmy:
Pobočky firmy Firma1
Adresa | Počet zaměstnanců
Praha 4     2
Praha 8     0

Zkoušel jsem toto:
SELECT IDpobocky, Adresa, COUNT(IDzamestnanec) FROM pobocky JOIN zamestnanci USING(IDpobocky) WHERE IDfirmy = 1
ale nefunguje to. asi se bude muset vytvořit složený dotaz. pomůžete mi prosím?


Sakra, ty tabulky se mi trochu smrskly, no snad se v tom vyznáte, za to se omlouvám, mohlo mě napadnout že se mezery odstraní :)

Moderátor Kajman: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Joker
Profil
Aby fungoval ten count, bude potřeba to seskupit pomocí GROUP BY
SELECT p.IDpobocky, p.Adresa, COUNT(z.IDzamestnanec) FROM pobocky p JOIN zamestnanci z ON p.IDpobocky = z.IDpobocky WHERE p.IDfirmy = 1 GROUP BY z.IDzamestnanec

Jinak by to podle mě mělo fungovat.
Mik
Profil *
díky za radu, ale ted jsem se zasekl na takové blbosti, dneska mi to nějak nemyslí: `pobocky p` mi nefunguje...
Kajman
Profil
V group by má být něco jiného

SELECT p.idpobocky,
       p.adresa,
       Count(DISTINCT idzamestnanec) AS pocet
FROM   pobocky AS p
       LEFT JOIN zamestnanci USING(idpobocky)
WHERE  idfirmy = 1
GROUP  BY p.idpobocky,
          p.adresa 
juriad
Profil
pokud tam mermomocí chceš cpát zpětné apostrofy (které slouží jen pro escapování "divných" názvů sloupců a tabulek a při jejich rozumném pojmenování nejsou třeba), tak věz, že název tabulky je `pobocky` a p je jen její alias, abys nemusel psát pořád pobocky celým slovem.
úplně nejsprávněji by bylo:
`pobocky` AS p
apostrofy zde nic neescapují, takže je lze vynechat; klíčové slovo AS je také nepovinné
Mik
Profil *
Pořád mi to hlásí Unknown column 'p.IDpobocky'
mám tam FROM `cars_pobocky` AS p


Už to funguje, díky moc

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: