Select z databazi s relaci 1:N

Honza Pazdziora adelton na informatics.muni.cz
Pondělí Prosinec 10 15:19:30 CET 2001


On Mon, Dec 10, 2001 at 01:41:24PM +0100, Zdeněk Böhm wrote:
> 
> 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

Tak znova -- od puvodniho zadani jste jednak zmenil nazvy tabulek
a jednak tam mate nejaka nova data. Poslete presne, co je v Table1
a Table2.

> 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

Tusim, ze ten konec ma byt

	and Table2.xxx = 1 where Table2.xxx is null

ale nejsem schopen to overit na Vasich konkretnich datech, protoze mi
je menite pod rukama.

Cili jake jsou presne zaznamy v tech tabulkach, jaky je slovni popis
vysledku a jaky je seznam pozadovanych zaznamu ve vysledku?

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
   .project: Perl, DBI, Oracle, MySQL, auth. WWW servers, DBD::XBase.
------------------------------------------------------------------------


Další informace o konferenci Databases