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 Databases