Select z databazi s relaci 1:N

Zdeněk Böhm zdenek.bohm na gammarus.cz
Pondělí Prosinec 10 13:41:24 CET 2001


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



Další informace o konferenci Databases