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

Savet oko komplikovanog select upita iz vise tabela za iskusnog

[es] :: MS SQL :: Savet oko komplikovanog select upita iz vise tabela za iskusnog

[ Pregleda: 2424 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nebojsa111
Novi Sad

Član broj: 104768
Poruke: 13
*.ADSL.neobee.net.



Profil

icon Savet oko komplikovanog select upita iz vise tabela za iskusnog24.12.2007. u 18:25 - pre 198 meseci
Imam zapetljan SQL problem koji cu uprostiti na primeru sa 2 tabele.

Table1 Table2
====== =======
ID User ID Table1_ID Nadimak
1 Ime1 1 1 Nadimak1
2 Ime2 2 1 Nadimak2
5 Ime3 8 2 Nadimak3

Nadimci su vezani za usera u odnosu 1:N.

Na formi se nalaze textboxes za pretragu i search button.

Rezultat pretrage treba da bude samo user iz Tabele1, tj. ako se pretrazuje nadimak, rezultat treba da prikaze samo usere kod kojih je taj nadimak pronadjen uz LIKE %nesto% uslov i to bez ponavljanja usera. Ceo problem obuhvata nekoliko tabela (nadimci, adrese, mailovi, IMs...) koje sve mogu biti vezane za Tabelu1 u odnosu 1:N (jedan prema vise), a bez obzira sta se pretrazivalo (jedan, nijedan ili vise parametara u isto vreme - uvek uz LIKE %nesto% uslov), rezultat treba da bude User (bez ponavljanja usera u rezultatu), iz Tabele1 kod kojih je "search" slucaj pronadjen.

Search radi na sajtu koji ima jaaaako velik broj usera, pa bi trebao da bude optimizovan, bez upotrebe temp tabela.

Ne trazim da mi neko ispise gotovo resenje... Dovoljno mi je samo uputstvo ili ideja bazirana na iskustvu kako da ovo resim...
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
..-ras1.bbh.dublin.eircom.net.

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: Savet oko komplikovanog select upita iz vise tabela za iskusnog24.12.2007. u 19:03 - pre 198 meseci
SELECT ime FROM tabela1
JOIN tabela2 ON tabela1.id = tabela2.tabela1_id
WHERE( @param=null OR tabela2.Nadimak LIKE %@param%) AND (@sledeciParam = null OR NekoPolje LIKE %@sledeciParam%)
itd...

Tako se povezes sa svim tabelama. Paremtri koji su null ce biti ignorisani, one koje prosledis ce biti ukljuceni u pretragu.

btw, nadam se da sam dobro razumeo pitanje
Every hamster has his day.
 
Odgovor na temu

Nebojsa111
Novi Sad

Član broj: 104768
Poruke: 13
*.ADSL.neobee.net.



Profil

icon Re: Savet oko komplikovanog select upita iz vise tabela za iskusnog24.12.2007. u 19:29 - pre 198 meseci
Pozz Fedya!

Hvala na javljanju!

JOIN u SELECT komandi uzima u obzir samo one ID-jeve koji postoje u obe tabele koje se vezu... Postoje useri koji ne moraju imati nijedan nadimak... To odmah znaci da su ti useri iskljuceni iz rezultata ako koristimo JOIN na tabelu nadimaka iako ti useri mozda imaju neki drugi podatak za pretragu...
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
..-ras1.bbh.dublin.eircom.net.

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: Savet oko komplikovanog select upita iz vise tabela za iskusnog24.12.2007. u 19:36 - pre 198 meseci
U tom slucaju koristi left outer join
Every hamster has his day.
 
Odgovor na temu

Nebojsa111
Novi Sad

Član broj: 104768
Poruke: 13
*.ADSL.neobee.net.



Profil

icon Re: Savet oko komplikovanog select upita iz vise tabela za iskusnog24.12.2007. u 20:01 - pre 198 meseci
Pa ni left join ne pomaze... :) Kakav god join da stavis iskljucice sve one koji nemaju ID u nekoj od tabela, jer je rezultat samo ime iz prve tabele. Left join bi pomogao da imam nesto ovako:

Code:

SELECT p.Ime, Nadimak = CASE WHEN n.Nickname IS NOT NULL THEN n.Nickname ELSE '' END
FROM Profiles p WITH NOLOCK
  LEFT JOIN Nicknames n ON p.ID = n.ProfileID
WHERE
....


Ma nije bitno... Snaci cu se nekako... Hvala ti u svakom slucaju!
 
Odgovor na temu

CallMeSaMaster

Član broj: 43611
Poruke: 466
*.sa.hs-hkb.ba.



+1 Profil

icon Re: Savet oko komplikovanog select upita iz vise tabela za iskusnog27.12.2007. u 22:27 - pre 198 meseci
LEFT OUTER Join ili RIGHT OUTER join mora da radi, zavisno u odnosu na koju tabelu radis
 
Odgovor na temu

[es] :: MS SQL :: Savet oko komplikovanog select upita iz vise tabela za iskusnog

[ Pregleda: 2424 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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