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

SQL - Select

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

[ Pregleda: 1450 | Odgovora: 6 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mia
Roma

Član broj: 8884
Poruke: 5
212.39.101.*



Profil

icon SQL - Select09.07.2003. u 10:36

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.

09.07.2003. u 10:36 

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

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

Sajt: dejan.lekic.org


Profil

icon Re: SQL - Select10.07.2003. u 14:19
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
10.07.2003. u 14:19 

Nub.Saibot
Srbija/BG

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



Profil

icon Re: SQL - Select10.07.2003. u 14:49
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.

10.07.2003. u 14:49 

Last Man Standing
Misha Kostich
Chicago

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



Profil

icon Re: SQL - Select11.07.2003. u 07:30
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.
11.07.2003. u 07:30 

Mia
Roma

Član broj: 8884
Poruke: 5
212.39.101.*



Profil

icon Re: SQL - Select11.07.2003. u 10:01
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?
11.07.2003. u 10:01 

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

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

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


Profil

icon Re: SQL - Select11.07.2003. u 11:52
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

11.07.2003. u 11:52 

Last Man Standing
Misha Kostich
Chicago

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



Profil

icon Re: SQL - Select12.07.2003. u 04:32
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.
12.07.2003. u 04:32 

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

[ Pregleda: 1450 | Odgovora: 6 ]

Postavi temu Odgovori

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