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

select upit---vise tabela!

[es] :: MS SQL :: select upit---vise tabela!

[ Pregleda: 1785 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.cmu.carnet.hr.



Profil

icon select upit---vise tabela!30.08.2006. u 11:19 - pre 214 meseci
Pozdrav!
Imam problem sa select upitom, eto primjer:
Postoje 3 tabele:

Glavna Ulice Banke

Ime sifra_ulice sifra_banke
Prezime naziv_ulice racun_banke
Sifra_ulice
Sifra_banke
Racun_korisnika

Trebam prikazati:

Ime Prezime sifra_ulice naziv_ulice sifra_banke naziv_banke racun_korisnika

-problem je u tome (meni je problem) što u tabeli „glavna“ polje sifra banke i racun_korisnika mogu biti NULL, tako da neki zapisi sadrze i to popounjeno a neki ne, i sad:

SELECT g.ime,g.prezime,g.sifra_ulice,u.naziv_ulice,g.sifra_banke,b.naziv_banke,g.racun_korisnika
FROM glavna g,ulice u,banke b
WHERE g.sifra_ulice=u.sifra_ulice and g.sifra_banke=b.sifra_banke

-ovo je dobro i ispise mi sve,al ne i one koji u polju g.sifra_banke imaju null a ne neku vrijednost (ovo polje je int kao i sve sifre (u programu je to ograniceno na 5 znamenki), pokusao sam dodati jos ovdje gore g.sifra_banke= null, i svasta drugo no nikako da uspijem ispisati sve i one koji tu imaju vrijednost ili je null u tom polju sifra_banke,

Što moram dodati da bih dobio sve, svaka pomoć je dobrodošla!!!

Radim sa sql2005expr.!

Hvala!

----Roberto----
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
*.ADSL.neobee.net.

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


+34 Profil

icon Re: select upit---vise tabela!30.08.2006. u 11:23 - pre 214 meseci
SELECT g.ime,g.prezime,g.sifra_ulice,u.naziv_ulice,g.sifra_banke,b.naziv_banke,g.racun_korisnika
FROM glavna g,
JOIN ulice u ON g.sifra_ulice=u.sifra_ulice
LEFT JOIN banke b ON g.sifra_banke=b.sifra_banke


Every hamster has his day.
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: select upit---vise tabela!30.08.2006. u 11:29 - pre 214 meseci
Nema veze na kom Edition-u radis, problem je sto ne koristis LEFT JOIN klauzule vec radis veze preko WHERE gde je onda uvek INNER JOIN (prikazuju ti se samo one pojave podataka iz tabela u vezi koje postoje u obe tabele).

Dakle,
Code:

SELECT g.ime,g.prezime,g.sifra_ulice,u.naziv_ulice,g.sifra_banke,b.naziv_banke,g.racun_korisnika
FROM glavna g 
LEFT JOIN ulice u ON g.sifra_ulice = u.sifra_ulice 
LEFT JOIN banke b ON g.sifra_banke = b.sifra_banke

Jasno?
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.cmu.carnet.hr.



Profil

icon Re: select upit---vise tabela!30.08.2006. u 12:59 - pre 214 meseci
radi dobro sad!

"Code:

SELECT g.ime,g.prezime,g.sifra_ulice,u.naziv_ulice,g.sifra_banke,b.naziv_banke,g.racun_korisnika
FROM glavna g
LEFT JOIN ulice u ON g.sifra_ulice = u.sifra_ulice
LEFT JOIN banke b ON g.sifra_banke = b.sifra_banke"

ovdje je stos u tome sto LEFT JOIN prikaze sve iz lijeve tabele(glavna) a iz ulice i banke prikaze samo one koji zadovolje da je g.sifra_........= sifra b... ili u... ako sifre nisu jednake onda je null??? je li tako ako sam dobro ja to skuzio?

da umjesto LEFT stavio RIGHT onda bi prikazao sve iz desne(kako je kad postoje dvije koje mogu biti desne?) a iz lijeve samo ono sto bi zadovoljilo uvijet??
kad je INNER priaže samo ono što postoji u obje tabele?



ako je tako onda je JASNo"!



hvala!
----Roberto----
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: select upit---vise tabela!30.08.2006. u 13:16 - pre 214 meseci
Tako je, ali ne bas bukvalno:

Citat:
roberto555(kako je kad postoje dvije koje mogu biti desne?)


Ne mogu dve biti desne, uvek posmatras samo tabele u relaciji, a u nasem primeru imas dve relacije: glavna na ulice; glavna na banke, i te iskaze uvek posmatraj odvojeno, tj.

1) glavna SVE - ulice SAMO ODGOVARAJUCE; glavna LEFT
2) glavna SVE - banke SAMO ODGOVARAJUCE; glavna LEFT

Moglo je i ovako:
Code:

SELECT g.ime,g.prezime,g.sifra_ulice,u.naziv_ulice,g.sifra_banke,b.naziv_banke,g.racun_korisnika
FROM ulice u 
RIGHT JOIN glavna g ON u.sifra_ulice = g.sifra_ulice 
LEFT JOIN banke b ON g.sifra_banke = b.sifra_banke
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.cmu.carnet.hr.



Profil

icon Re: select upit---vise tabela!30.08.2006. u 14:19 - pre 214 meseci
e skopcao sam,,, ja sam gledao sve tabele, a sad kad si mi rekao samo one koje su u relaciji, skuzio sam ( koju sam glupost pitao :)) toliko za sad, zahvaljujem na objasnjenjima!
----Roberto----
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.cmu.carnet.hr.



Profil

icon Re: select upit---vise tabela!30.08.2006. u 16:25 - pre 214 meseci
e evo jos jednog problema,

glavna----------------banke

ime ------------ sifra_banke
prezime --------------naziv_banke
sifra_banke1
sifra_banke2

ove dvije sifre su zato jer covjek moze imati dva računa,(al moze biti i da je jedan popunjen samo ili nijedan)problem je kad je jedan!

i sad:

select g.ime,g.prezime,g.sifra_banke1,b.naziv_banke as naziv_banke1,g.sifra_banke2,b.naziv_banke as naziv_banke2
from glavna g
left join banke b on g.sifra_banke1=b.sifra_banke

---ne znam kako da ovo doradim da mi prikazenaziv banke kako je i sifra,ako je upisana samo sifra_banke1 onda prikaze naziv_banke1 a on meni ispise oba naziva jer sam stavio da prikaze b.naziv_banke,no ne znam kako da to sredim,
jer u tablici banke su sifre i nazivi a u glavna sad mogu biti dvije sifre iz te tablice banke ,,, to me muci,nadam se da sam uspio objasniti sto mi treba!?


----Roberto----
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: select upit---vise tabela!30.08.2006. u 17:10 - pre 214 meseci
Ne znam da li sam te dobro shvatio, ali evo:
Code:

SELECT g.ime, g.prezime, g.sifra_banke1, b1.naziv_banke as naziv_banke1, g.sifra_banke2, b2.naziv_banke as naziv_banke2
FROM glavna g
LEFT JOIN banke b1 on g.sifra_banke1 = b1.sifra_banke
LEFT JOIN banke b2 on g.sifra_banke2 = b2.sifra_banke
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.cmu.carnet.hr.



Profil

icon Re: select upit---vise tabela!30.08.2006. u 17:22 - pre 214 meseci
eto vec sam isprobal,,tocno to je,,, zahvaljujem!
----Roberto----
 
Odgovor na temu

[es] :: MS SQL :: select upit---vise tabela!

[ Pregleda: 1785 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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