[linux] VYRIESENE: OT: pomoc s sql prikazom ...

Oskar Stolc stolc na intrak.tuke.sk
Čtvrtek Srpen 16 09:43:18 CEST 2001


> Co takto...
> 
> Select distinct(meno) from tabulka where jedlo='maslo' and 'paradajka';
> 

Klauzula "jedlo = 'maslo' and jedlo = 'paradajka'" ti navrati nic,
lebo neexistuje taky riadok, kde by malo jedlo naraz hodnotu maslo
aj paradajka...


Inac uz som to vyriesil... (uvediet pre tri hladane jedla:)

- prvy sposob je robit prieniky:

select meno from tabulka where jedlo = 'maslo'
intersect
select meno from tabulka where jedlo = 'chlieb'
intersect
select meno from tabulka where jedlo = 'paradajka' ;

Skriptom si viem vygenerovat jednotlive selecty, ale toto riesenie
sa mi nepaci, lebo by bol vysledny select zbytocne dlhy a intuicia
mi hovori, ze aj neefektivny...

- druhy sposob zavana rekurziou:

select meno from tabulka where jedlo = 'maslo' and meno in (
	select meno from tabulka where jedlo = 'chlieb' and meno in (
		select meno from tabulka where jedlo = 'paradajka'
	)
) ;

v tomto pripade vysledny select tiez nevyzera najjednoduchsie, a
ako sa tu spominalo subselecty su vraj neefektivne...

- treti sposob mi poslal kolega z prace :-)

1	select meno from tabulka where jedlo in (
2		'maslo', 'chlieb', 'paradajka'
3	) group by meno having count (*) =
4	_pocet_hladanych_retazcov_

v tomto pripate je _pocet_hladanych_retazcov_ = 3

Takyto select pomocou skriptu vygenerujem najjednoduchsie (meni sa
len druhy a 4 riadok...


Dakujem kazdemu za radu.

Oskar





Další informace o konferenci linux