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

SQL - Select

[es] :: Baze podataka :: SQL - Select

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mia

Član broj: 8884
Poruke: 18
212.39.101.*



+7 Profil

icon SQL - Select09.07.2003. u 10:36 - pre 253 meseci
Kako da optimalno napisem slijedeci SELECT?

1) Imam 2 tabele: tab1 i tab2
2) povezane su poljima: tab1.a1 = tab2.a2
3) trebam selektirati polja:tab1.b1,tab1.c1,tab2.b2,tab2.c2
4) trebam prvo uzeti podatke iz tab1 i napraviti LEFT JOIN na tab2, npr.

SELECT tab1.b1,tab1.c1,tab2.b2,tab2.c2
FROM tab1 LEFT JOIN tab2 ON tab1.a1 = tab2.a2
WHERE "Uslov"

Uz sve to, ne trebam uzimati slogove iz tab1 za koje nema odgovarajucih u tabeli tab2.

 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: SQL - Select10.07.2003. u 14:19 - pre 252 meseci
Da li nam mozes dati opis te dve tabele? Dakle daj jedan
Code:
desc tab1; desc tab2;
:)
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Nub.Saibot
Srbija/BG

Član broj: 11838
Poruke: 99
*.direcpceu.com



Profil

icon Re: SQL - Select10.07.2003. u 14:49 - pre 252 meseci
Pokušaj ovako:

SELECT tab1.b1,tab1.c1,tab2.b2,tab2.c2
FROM tab1
INNER JOIN tab2 ON tab2.a2 = tab1.a1
WHERE "Uslov"

Koliko znam inner join ne prikazuje redove za koje nema odgovarajućih u drugoj tabeli.

 
Odgovor na temu

Last Man Standing
Misha Kostich
Chicago

Član broj: 3775
Poruke: 101
*.client.attbi.com



+1 Profil

icon Re: SQL - Select11.07.2003. u 07:30 - pre 252 meseci
Ne mozes da koristis i LEFT JOIN (tacka 4) i da dobijes samo one slogove iz t1 za koje postoji odgovarajuci kljuc u t2. Kontradiktorno je. Reci im da ti malo bolje objasne sta hoce.
A computer once beat me at chess, but it was no match for me at kick boxing.
 
Odgovor na temu

Mia

Član broj: 8884
Poruke: 18
212.39.101.*



+7 Profil

icon Re: SQL - Select11.07.2003. u 10:01 - pre 252 meseci
Hvala vam, ja milsila da sam bila jasna.
Ustvari, trebam izeti podatke iz t2, ali samo ako postoje odgovarajuci u t1.

Slijedeci select-ovi mi daju iste rezultate (bar mi se tako cini):
1)
SELECT tab1.b1,tab1.c1,tab2.b2,tab2.c2
FROM tab1,tab2
WHERE tab1.a1 = tab2.a2 AND "Uslov"
2)
SELECT tab1.b1,tab1.c1,tab2.b2,tab2.c2
FROM tab1 RIGHT JOIN tab2 ON tab1.a1 = tab2.a2
WHERE "Uslov"
3)
SELECT tab1.b1,tab1.c1,tab2.b2,tab2.c2
FROM tab1 INNER JOIN tab2 ON tab1.a1 = tab2.a2
WHERE "Uslov"

Je li to zaista tako i sta je optimalno?
 
Odgovor na temu

mladenovicz
Zeljko Mladenovic
Xoran Technologies, Inc., Ann Arbor, MI,
USA / Software Engineer
Ann Arbor, MI, USA

Član broj: 6598
Poruke: 2065
*.yubc.net

Jabber: mladenovicz@elitesecurity.org
ICQ: 95144142
Sajt: yubc.net/~mz


Profil

icon Re: SQL - Select11.07.2003. u 11:52 - pre 252 meseci
Evo jedan primercic. Tabele u primeru su Patient i Study, a ListaPolja su polja koja treba da budu selektovana. Napravis novi Query u Accessu i onda mu menjas u DesignViewu JOIN PROPERTIES. Imas tri slucaja, prvo ide opis, pa SQL upit

1) Only include rows where the joined fields from both tables are equal

SELECT ListaPolja
FROM Patient INNER JOIN Study ON Patient.PatientID = Study.PatientID

2) Include ALL records from 'Patient' and only those records from 'Study' where joined fields are equal

SELECT ListaPolja
FROM Patient LEFT JOIN Study ON Patient.PatientID = Study.PatientID

3) Inlude All records from 'Study' and only those records from 'Patient' where joined fields are equal

SELECT ListaPolja
FROM Patient RIGHT JOIN Study ON Patient.PatientID = Study.PatientID

 
Odgovor na temu

Last Man Standing
Misha Kostich
Chicago

Član broj: 3775
Poruke: 101
*.client.attbi.com



+1 Profil

icon Re: SQL - Select12.07.2003. u 04:32 - pre 252 meseci
RIGHT JOIN pod (2) ne valja. Izmedju (1) i (3) optimalno je (1) jer ces manje da kucas :)

Kad imas nedoumice sta je najbolje, pogledaj semu koju napravi Query Analyzer ili pre upita ukucaj SET SHOWPLAN_TEXT ON.

Uzgred, kako ce join da se izvrsi zavisi od vise faktora - gde su ti indexi, koliko su velike tabele (recimo hash join je bolji kad se tabele znatno razlikuju po velicini itd.)

Procitaj i ovo i vise niko nece smeti da se zeza sa tobom:

http://www.sqlmag.com/Articles/Index.cfm?ArticleID=7443

A computer once beat me at chess, but it was no match for me at kick boxing.
 
Odgovor na temu

[es] :: Baze podataka :: SQL - Select

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

Postavi temu Odgovori

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