SQL dotaz s JOIN
Pavel Stehule
stehule na kix.fsv.cvut.cz
Čtvrtek Září 11 09:18:54 CEST 2003
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 Test