Autor Zpráva
ofcopes
Profil *
Zdravím všechny.

Mám následující problém. Mám 2 tabulky - cely(cislo_cely , kapacita) a vezni(id, jmeno, cislo_cely) a potřebuju udělat dotaz na databázi, který mně vypíše seznam cel, ve kterých je ještě volné místo. To znamená udělat nějakým způsobem sumu nad vězni a porovnat ji s kapacitou cely.

select V.cislo_cely , sum(V.cislo_cely) AS pocetVeznu
from cely C,vezni V
where V.cislo_cely = C.cislo_cely
Group by V.cislo_cely

Tento dotaz mně vrátí cislo cely a počet věznu v ní, nevrátí mi ale cely, kde nikdo není. Předpokládám, že je to proto, protože porovnávám "V.cislo_cely = C.cislo_cely" a tak mi to spojí jen ty řádky, kde je někdo v cele. Porovnat sumu věznů v cele s danou kapacitou cely se mi nedaří už vůbec.

Děkuji za radu
Alphard
Profil
select C.cislo_cely , C.kapacita - count(V.cislo_cely) volna_mista, C.kapacita kapacita
from cely C left join vezni V 
on V.cislo_cely = C.cislo_cely 
group by V.cislo_cely
having C.kapacita > count(V.cislo_cely)
Kajman_
Profil *
Možná raději
group by C.cislo_cely

aby to fungovalo dobře pro ty prázdné cely.
Shane
Profil
SELECT * FROM cely WHERE cislo_cely NOT IN (SELECT cislo_cely FROM vezni)
Kajman_
Profil *
Shane
To nevypíše ty cely, kde někdo je, ale je tam ješte místo.

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: