SQL SELECT beznadej
Vladimír Vlach
vladimir.vlach na pcnet.cz
Pátek Červenec 23 10:34:31 CEST 1999
> > > SELECT zakaznik.jmeno, count(*)
> > > FROM zakaznik, odbery
> > > WHERE zakaznik.jmeno = odbery.jmeno_zakaznika
> > > GROUP BY zakaznik.jmeno
> > >
> > > Tohle seskupi nalezene zaznamy podle zakaznik.jmeno a
> count(*) je pak
> > > spocitano vzdy v ramci te skupiny.
> >
> > To funguje tak jak ma! Super! Trochu jsem si s tim i hral, ale
> > co zaznamy u zakazniku, kterym se nic neprodalo. Nevyhodi
> to ani 0, coz
> > samozrejme chapu, kvuli te podmince WHERE.
> > Slo by to nejak obejit?
>
> No, pokud bychom tam dali pouze outer join, tak by nam to u tech, kde
> neni nic, dalo jednicku. Takze nejlepsi bude pouzit UNION ALL a k tomu
> vyse uvedenemu selectu prihodit ta jmena, u kterych zadny pohyb v te
> zavisle tabulce neni.
Ano opet dalsi pokrok a pouceni. Chvili mi to trvalo pochopit co znamena
UNION ALL a jak se pouziva. Pochopil jsem to tak, ze to spoji dva
selecty
do 1 vyberu.
Nyni to mam asi takto:
SELECT zakaznik.id, zakaznik.jmeno, count(*)
FROM zakaznik, odbery
WHERE zakaznik.jmeno=odbery.jmeno_zakaznika
GROUP BY zakaznik.id, zakaznik.jmeno
UNION ALL
SELECT zakaznik.id, zakaznik.jmeno, '0' FROM zakaznik, odbery;
Pridal jsem vypis sloupcu, ktere potom budu chtit videt, coz na
tomto priklade nevadi.
Ted mi to dela to, ze mi to vybere nasledujici:
id|jmeno |count
--+----------------+-----
1|pepa | 4
2|josef | 3
1|pepa | 0
2|josef | 0
3|vlada | 0
4|honza | 0
(6 rows)
Je videt, ze nepred vyselectuje to co ma, ale potom je jeste priradi
i kdyz by je uvadet nemel.
Jak tedy zamezit tomu, aby se uz vypsane zaznamy nevypisovali ?
Vim, ze mi to v mem pripade chybi, ale nevim jak na to...
Dekuji
Vlada Vlach
--<PRE>
+=-=-=-=-=/ // /-=-=-=-=-=-=-=-=-+-=-=-=-=-=-+---------------------+
| / // / Vladimir VLACH > )))))))) | \/ |_ /\ |) /\ |
|__ __ / // / Admin of ICQ.CZ > (((( \ | Age - 19|
|\ \\ \/ // / http://www.icq.cz > \\\ 6 6 | Nick - Vladaman|
| \ \\/ // / http://www.pcnet.cz > \C 7 | ICQ UIN# - 9511246|
| \ V /V / email: vlach na icq.cz > \ _-) | Location - Brno|
+---\_/\_/-=---=---=---=---=---=-+-=- ) ( =-=+---------------------+
</PRE>
Další informace o konferenci Databases