SQL dotaz s JOIN
Adam Mika
lists na bnm.cz
Čtvrtek Září 11 16:46:54 CEST 2003
No ja jsem potreboval vypsat vsechny sekce a pocet prispevku, ktere
dana sekce obsahuje. Ale nejak se mi to nedarilo, aby mi to vypsalo
i sekce, ktere nemaji zadne prispevky. Kazdopadne ted uz je vsechno
v pohode a funguje. :-)
Pavel Stehule wrote:
> omlouvam se, preklep
>
> select sum(case zobrazit when 't' then 1 else '0'), nazev
> from sekce join prispevky on idsekce = sekce.id
> group by nazev;
>
>
>
> In article <slrnblp6s7.cl8.stehule na kix.fsv.cvut.cz>, Pavel Stehule wrote:
>
>>Nebo jeste jednoduseji
>>
>>select sum(case zobrazit when 't' then 1 else '0'), nazev
>> from sekce join prispevky on idsekce = sekce.id
>> froup by nazev;
>>
>>
>>Pavel
>>
>>
>>In article <slrnblp0t5.c56.stehule na kix.fsv.cvut.cz>, Pavel Stehule wrote:
>>
>>>Jde-li Vam o to, jak vypsat sekce, ktere nemaji, zadny viditelny prispevek,
>>>pak pouzijte UNION.
>>>
>>>napr.
>>>
>>>select count (*), nazev
>>> from sekce join prispevky on idsekce=sekce.id
>>> where zobrazit = 't'group by nazev
>>>union
>>>select 0, nazev
>>> from sekce join prispevky on idsekce = sekce.id
>>> where 'f' = all(
>>> select zobrazit from prispevky where idsekce=sekce.id);
>>>
>>>
>>> count | nazev
>>>-------+--------
>>> 0 | main
>>> 1 | links
>>> 1 | others
>>>(3 øádek)
>>>
>>>Pavel
>>>
>>>
>>>In article <3F56F02B.6050706 na bnm.cz>, Adam Mika wrote:
>>>
>>>>Zdravim,
>>>>
>>>>mam problem, se kterym bych potreboval poradit. Jestli si nekdo udelate
>>>>cas, budu moc vdecny.
>>>>
>>>>Problem:
>>>>Vytvarim SQL dotaz, kterym si z databaze vytahuju seznam sekci urciteho
>>>>serveru. Kazda sekce obsahuje prispevky a ja bych chtel u kazde sekce
>>>>zobrazit pocet prispevku, ktere dana sekce obsahuje. To v podstate neni
>>>>problem a jednoduchy dotaz s joinem to vyresi [1].
>>>>
>>>>Problem nastava ve chvili, kdy chci jeste filtrovat prispevky, ktere se
>>>>maji zapocitat do celkove poctu. V tu chvili se mi prestanou logicky
>>>>zobrazovat sekce, ktere neobsahuji zadne prispevky. Ja ale potrebuju
>>>>zobrazit i ty.
>>>>
>>>>Kdyz dam do dotazu jeste WHERE prispevky.zobrazit_prispevek = 'Y', tak
>>>>logicky u sekci, ktere nemaji prispevky tahle podminka neplati a sekce
>>>>se vubec nevypise. Existuje nejake reseni, jak tohle obejit? Zkousel
>>>>jsem to ruznymi zpusoby, ale nepovedlo se. Nerad bych to resil tak, ze
>>>>bych si pocty prispevku zjistoval az pri vypisovani te konkretni sekce.
>>>>
>>>>
>>>>Mam napr. tabulky:
>>>>SEKCE
>>>>- id_sekce
>>>>- nazev_sekce
>>>>
>>>>PRISPEVKY
>>>>- id_prispevku
>>>>- nazev_prispevku
>>>>- zobrazit_prispevek
>>>>_ id_sekce
>>>>
>>>>
>>>>[1]
>>>> SELECT
>>>> sekce.nazev nazev_sekce,
>>>> COUNT(prispevky.id_prispevku) pocet_prispevku
>>>> FROM sekce
>>>> LEFT JOIN prispevky ON prispevky.id_sekce = sekce.id_sekce
>>>> GROUP BY sekce.id_sekce
>>>> ORDER BY nazev_sekce
>>>>
>>>>
>>>>Diky za pomoc.
>>>>
>
>
>
Další informace o konferenci Databases