[ 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.
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.