Select z databazi s relaci 1:N

Jan Havlicek havlicek na vse.cz
Úterý Prosinec 11 09:13:24 CET 2001


Poslyste cetl jste muj prispevek ze 7.12.? Puvodni zadani jsem na MySQL
vyresil, a dokonce to neni nijak zvlast slozite.

Honza

Zdeněk Böhm wrote:
> 
> Zdravim,
> 
> tak jsem do toho pres vikend trochu vrtal, ale kloudneho vysledku jsem se
> nedobral. Bud Vami popisovane moznosti Mysql skutecne nema, nebo ja jsem
> uplny databazovy trotl (hmm, bohuzel je tahle moznost pravdepodobnejsi :-)).
> Par konkretnich prikladu provedenych s databazi MySQL 3.23.36 (dival jsem se
> do changelogu verze 3.23.39, ale nic zasadniho, co by mi pomohlo tam
> nepribylo)
> 
> nejprve co mame vlastne v tabulkach:
> SELECT Table1.Id, Table2.xxx FROM Table1, Table2 WHERE
> Table1.Id=Table2.Table1_Id
> 1        1
> 1        2
> 1        3
> 2        2
> 2        3
> 3        1
> pridame "filtr" na pole xxx, ktere jsou rovny 1
> SELECT Table1.Id, Table2.xxx FROM Table1, Table2 WHERE
> Table1.Id=Table2.Table1_Id AND Table2.xxx<>1
> 1        2
> 1        3
> 2        2
> 2        3
> to je predpokladany vysledek tohoto dotazu, nicmene potrebuji docilit toho,
> aby vysledek dotazu byl nasledujici:
> 2        2
> 2        3
> dotaz s pouzitim LEFT OUTER JOIN vsak dela presny opak, prida do vysledku
> zaznamy, ktere nechci (tak jak podle dokumentace ma).
> SELECT Table1.Id, Table2.xxx FROM Table1 LEFT OUTER JOIN Table2 ON
> Table1.Id=Table2.Table1_Id AND Table2.xxx<>1
> 1        2
> 1        3
> 2        2
> 2        3
> 3      NULL
> 
> S pozdravem Zdenek Bohm


-- 
<PRE>                         _______          ____
                              \___   |        |    |
 Jan Havlicek              _      \  |   _     \  /
 Vysoka Skola Ekonomicka  |-|   _\_| |__|_|__O__||__B<
 University of Economics  |-|---| +++     __________|)
 Prague CZ                |-|   | ++  ______________|)
 E-mail HAVLICEK na VSE.CZ |=|_|___|___________________|==|
                           -( + )<>-|-|( + )--( + )--\\\
 Keep smiling            ---------------------------------
</PRE>


Další informace o konferenci Test