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