Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

sql problem

[es] :: Baze podataka :: sql problem

[ Pregleda: 3769 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

marko000
marko vucinic
Beograd

Član broj: 6501
Poruke: 63
*.vdial.verat.net



Profil

icon sql problem30.12.2003. u 23:09 - pre 246 meseci
ako imam kompletnu tabelu i jos jednu koja bi bila podskup pomenute,kojim
upitom moze da se dobije razlika skupova?

marko
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.vdial.verat.net



+3 Profil

icon Re: sql problem31.12.2003. u 00:13 - pre 246 meseci
hint: EXCEPT (MINUS kod Oracle-a).
Code:

SELECT * FROM tabela1
EXCEPT
SELECT * FROM tabela2

ili obrnuto zavisi koja ti razlika treba.


[Ovu poruku je menjao _owl_ dana 31.12.2003. u 13:23 GMT]
Owl
 
Odgovor na temu

marko000
marko vucinic
Beograd

Član broj: 6501
Poruke: 63
*.vdial.verat.net



Profil

icon Re: sql problem31.12.2003. u 06:10 - pre 246 meseci
hvala puno..mislim da ce to zavrsiti posao...
sad videh da sam u brzini prevideo ovu poruku pa sam posalo jos jednu na istu temu
;)))
izvinjavam se moderatorima

Marko
 
Odgovor na temu

dinke
Dragan Dinić
General Manager / Lampix.net
Beograd

Član broj: 933
Poruke: 1008
*.boox.co.yu

Sajt: www.dinke.net


+2 Profil

icon Re: sql problem12.01.2004. u 09:50 - pre 246 meseci
Ovo je tipican primer za koriscenje LEFT JOIN-a.

Npr, ako je t1 prva tabela a t2 tabela koja je (kako ti rece) njen podskup evo kako bi dobio one slogove koji nisu prisutni u t2:

SELECT t1.*, t2.*
FROM t1 LEFT JOIN t2 ON t1.i1 = t2.i2
WHERE t2.i2 IS NULL

Za razliku od prethodnog ovaj query bi trebao da radi na vecini baza a ne samo na Oracle-u.

Pozdrav
Dinke


 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1043
*.drenik.net



+3 Profil

icon Re: sql problem12.01.2004. u 13:14 - pre 246 meseci
Prethodni upit radi na svim DBMS-ovima koji podrzavaju SQL 99 standard (mozda i 92 nisam siguran kada su uvedeni UNION, EXCEPT i INTERSECT). Neznam odakle ti da ce raditi samo na Oracle-u (ja sam samo naveo i koja je sintaksa za Oracle).
Druga stvar je sto upit koji koristi LEFT JOIN zahteva mnogo vise resursa nego upit koji koristi EXCEPT.
Treca stvar upit koji si dao nece raditi (radio bi kada bi se koristio LEFT OUTER JOIN a ne LEFT JOIN -- mogao bi malo da procesljas po dokumentaciji i vidis u cemu je razlika)
Owl
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com



+79 Profil

icon Re: sql problem12.01.2004. u 14:18 - pre 246 meseci
Ono sa EXCEPT je OK teorijski, ako kazes da to ORACLE podrzava, OK, verujemo. Medjutim sumnjam da radi bilo gde drugo. Ne MS SQL 2000 postoji EXCEPT, ali kao funkcija a skupovi se zadaju kao nizovi, a ne kao tabele (mozda moze i sa tabelama, zna li neko?)

Ono sa LEFT JOIN radi u MS SQL 2000, potpuno isto kao LEFT OUTER JOIN, a radilo je i u verzijama od 6.5. Sta je bilo pre, ne znam. U Accessu radi isto, od verzije 95.

Da li i MySQL ima LEFT/RIGHT join?
 
Odgovor na temu

dinke
Dragan Dinić
General Manager / Lampix.net
Beograd

Član broj: 933
Poruke: 1008
*.198.EUnet.yu

Sajt: www.dinke.net


+2 Profil

icon Re: sql problem12.01.2004. u 22:07 - pre 246 meseci
Citat:
Neznam odakle ti da ce raditi samo na Oracle-u (ja sam samo naveo i koja je sintaksa za Oracle).

U pravu si, pogresno sam interpretirao tvoj post. No, i dalje stoji da na nekim bazama EXCEPT ne postoji.


Citat:
Treca stvar upit koji si dao nece raditi (radio bi kada bi se koristio LEFT OUTER JOIN a ne LEFT JOIN -- mogao bi malo da procesljas po dokumentaciji i vidis u cemu je razlika)

Upit je naravno 100 % ispravan, a kao dokaz ti dajem output iz MySQL-a 4.0.16 koji uzgred podrzava i LEFT i RIGHT JOIN . Right konkretno od verzije 3.23.25, Left mislim znatno ranije (ovo je ujedno i odgovor Zidaru).

Code:

mysql> select user(),version();
+-----------------+---------------------+
| user()          | version()           |
+-----------------+---------------------+
| dinke@localhost | 4.0.16-standard-log |
+-----------------+---------------------+
1 row in set (0.03 sec)

mysql> select * from t1;
+------+------+
| i1   | c1   |
+------+------+
|    1 | a    |
|    2 | b    |
|    3 | c    |
+------+------+
3 rows in set (0.00 sec)

mysql> select * from t2;
+------+------+
| i2   | c2   |
+------+------+
|    1 | a    |
|    2 | b    |
+------+------+
2 rows in set (0.00 sec)

mysql> SELECT t1.*, t2.*
    -> FROM t1 LEFT JOIN t2 ON t1.i1 = t2.i2
    -> WHERE t2.i2 IS NULL;
+------+------+------+------+
| i1   | c1   | i2   | c2   |
+------+------+------+------+
|    3 | c    | NULL | NULL |
+------+------+------+------+
1 row in set (0.00 sec)


Pozdrav
Dinke
 
Odgovor na temu

[es] :: Baze podataka :: sql problem

[ Pregleda: 3769 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.