[ frroggy @ 04.06.2006. 01:53 ] @
Do sada sam koristio SQL sa prostim INTERSECT i no problemo. A sada MySQL sa "ne može intersect"...uf

Dakle,
čitao sam mnogo o ovome i da li sam malko priglup post'o ili je to posledica čitanja u ove sitne sate nakon celodnevnog rada, ko to zna...

Elem, preblem mi je sledeći:

Code:

Table: names
+----+----------+--------+
|  id  |    name   |   code  |
+----+----------+--------+
|  1   |    Pera    |    21    |
|  2   |    Mika    |    35    |
+----+----------+--------+

Table: years
+----+----------+--------+
|  id  |    year    |   code  |
+----+----------+--------+
|  8   |    1971   |    28    |
|  9   |    1975   |    21    |
+----+----------+--------+


treba mi ekvivalent sledećeg query-ja:

SELECT code FROM names WHERE name='Pera' INTERSECT SELECT code FROM years WHERE year > 1974

Ovaj upit bi trebao da vrati rezultat 21.

Kako ovo napisati sa nekim od JOIN-a?

[ frroggy @ 04.06.2006. 01:55 ] @
al sam nacrto tabele svaka mi dala .....

bolje da ja idem sad malo spavat, jelda
[ SmilieBG @ 04.06.2006. 05:26 ] @
SELECT FROM names n, years y WHERE n.name = 'Pera' AND y.year >= '1971';

Poz,
Sale
[ frroggy @ 04.06.2006. 08:35 ] @
Hvala Sale,

samo mislim da treba dodati šta se selektuje:

SELECT t1.code FROM ....

a nakon toga, ako u tabeli years imam više pogodaka, toliko puta mi vrati isti rezultat, pa sam iskoristio i DISTINCT.

Kompletan query sada izgleda kao

SELECT t1.code FROM names t1, years t2 WHERE t1.name='Pera' AND t2.year > 1974

Ukoliko niko nema primedbi, primiću ovu sintaksu k znanju i koristiti je za dalj[š]e :)

Veliki pozdrav
[ goranvuc @ 04.06.2006. 08:43 ] @
Code:

SELECT t1.code 
FROM names t1 INNER JOIN years t2 ON t1.code = t2.code 
WHERE t1.name='Pera' AND t2.year > 1974
[ frroggy @ 04.06.2006. 09:38 ] @
BINGO !!!

To je pun pogodak.

Svima mnogo zahvaljujem jer ste mi rasvetlili ovaj deo.
[ SmilieBG @ 04.06.2006. 15:51 ] @
Eh, to sam pisao ujutru, nakon sto sam se vratio iz grada :|
Dobro da nisam vise izgresio :)

Poz,
Sale
[ frroggy @ 04.06.2006. 17:41 ] @
eeeeeee ne lezi vraže, evo mene opet sa nastavkom problema.

ukoliko u drugoj tabeli (years) postoji više upisa sa istom vrednošću polja code, query

SELECT * FROM names t1 INNER JOIN years t2 ON t1.code=t2.code WHERE t1.name='Pera'

mi vrati n puta istu kolonu (zapravo ne istu nego sa svim poljima iz t1 i po jednim poljem iz t2 koje se menja), gde je n broj upisa u years tabeli sa istom vrednošću polja code.

Kako ovo sad da rešim?
[ goranvuc @ 07.06.2006. 18:49 ] @
Cekaj, pa sta ti sad treba SQL da vrati: samo Code ili sve kolone? Ako ti treba samo code onda u onaj moj SQL dodaj samo DISTINCT i to ti je to.