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

SQL upit - vise tabela

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

[ Pregleda: 2087 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

corelko

Član broj: 165571
Poruke: 92
*.teol.net.



+6 Profil

icon SQL upit - vise tabela19.07.2018. u 08:21 - pre 69 meseci
Pozdrav ljudi.
Mozda nije pravo mesto za temu ali eto.
Imam neku bazu pasa i vlasnika (bice jasno iz slike modela).
Treba da dohvatim podatke iz vise tabela i to treba da izlistam sve pse (ime, datum rodjenja, vrsta pol..) nekog vlasnika kao i njihove brojeve pasosa i mikrocipa.
Ovaj prvi deo kada treba da dohvatim sve pse nekog vlasnika je lagano ali kada treba da ukljucim i jos ove tabele MIKROCIP I PASOS i dohvatim pomenuta polja iz ovih tabela tu totalno zablokiram.
Da li je ovo moguce izvesti uopste iz ovako napravljenog modela baze?

Evo slika modela:
https://ibb.co/fRKSUJ

Hvala unapred.
 
Odgovor na temu

ser_nicky
BI Developer

Član broj: 307062
Poruke: 97
*.adsl.highway.telekom.at.



+32 Profil

icon Re: SQL upit - vise tabela19.07.2018. u 08:57 - pre 69 meseci
Naravno da je moguce:)

Citat:
Ovaj prvi deo kada treba da dohvatim sve pse nekog vlasnika je lagano...


Ako ti je ovo lagano, onda ne vidim sta je problem sa ostatkom zahteva, posto po istom principu vadis podatke iz tabela Mikrocip i Pasos (hint: pogledaj FK u navedenim tabelama)
 
Odgovor na temu

corelko

Član broj: 165571
Poruke: 92
*.teol.net.



+6 Profil

icon Re: SQL upit - vise tabela19.07.2018. u 12:50 - pre 69 meseci

Uspeo sam.
Code:

select VLASNIK.ID_VLASNIK, VLASNIK.PREZIME, PAS.IME, MIKROCIP.MIKROCIP from VLASNIK
LEFT join JE_VLASNIK ON JE_VLASNIK.ID_VLASNIK=VLASNIK.ID_VLASNIK
LEFT join PAS on PAS.ID_PAS=JE_VLASNIK.ID_PAS
LEFT join MIKROCIP on MIKROCIP.ID_PAS=PAS.ID_PAS
WHERE VLASNIK.ID_VLASNIK='16';


itd, konkretno za jednog tipicnog vlasnika sa id_vlasnik=16


Da li mozda koristis Entity Framework i linq upite?
Bilo bi zanimljivo ovo uraditi kroz linq upit pomocu lambda izraza.
 
Odgovor na temu

Deunan

Član broj: 338178
Poruke: 83
*.dynamic.isp.telekom.rs.



+21 Profil

icon Re: SQL upit - vise tabela19.07.2018. u 13:39 - pre 69 meseci
Treba li posebne tabele za mikrocip i pasos? Moze li pas da ima 2 cipa ili 2 pasosa?
Takodje, treba li ti pivot table "vlasnistvo"? Moze li pas da ima 2 vlasnika?
Ako ces da koristis vise cipova, pasosa, vlasnika... za jednog psa, left join ce ti sve to mnoziti i zavrsices sa gomilom dupliranih redova za istog psa...
Ako imas po jedan od svega, mozda ti je lakse da sve uradis sa 2 tabele (vlasnici, psi).

 
Odgovor na temu

corelko

Član broj: 165571
Poruke: 92
*.teol.net.



+6 Profil

icon Re: SQL upit - vise tabela20.07.2018. u 06:26 - pre 69 meseci
Ne moze pas da ima 2 mikrocipa i dva pasosa. Kontao sam da se osiguram da ako iz nekog razloga pas ili njegov vlasnik nesto od ovog zagubi da mogu da pamtim prethodne npr pasose ili mikrocipove.
Mozda sam malo pretjerao sa tim.
Pas naravno ne moze da ima vise vlasnika.

Koliko sam shvatio predlazes da se ovo uradi sa 2 tabele PAS I VLASNISTVO, a da evidenciju o pasosu, mikrocipu itd vodim u tabeli PAS i sve to izmedju ove tabele resim relacijom 1:m.
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: SQL upit - vise tabela20.07.2018. u 06:41 - pre 69 meseci
Citat:
corelko: Ne moze pas da ima 2 mikrocipa i dva pasosa.


A što ne bi moglo? Mikročip može da crkne pa da se zameni. Pas može da promeni vlasnika i to više puta pa da ima bivše vlasnike. Više je pitanje da li treba to da imaš u svojoj evidenciji.


 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3445

Jabber: djoka_l


+1462 Profil

icon Re: SQL upit - vise tabela20.07.2018. u 06:57 - pre 69 meseci
A pasoš može da ima rok važenja, posle kojeg se vadi novi (možda).
 
Odgovor na temu

Deunan

Član broj: 338178
Poruke: 83
*.dynamic.isp.telekom.rs.



+21 Profil

icon Re: SQL upit - vise tabela20.07.2018. u 09:45 - pre 69 meseci
U redu je ako zelis da pratis prethodne cipove, vlasnike... ali u tom slucaju taj query ce da ti daje gomilu redova istog psa.

vlasnik1 pas1 cip1 pasos1
vlasnik1 pas1 cip1 pasos2
vlasnik1 pas1 cip2 pasos1
vlasnik1 pas1 cip2 pasos2

moras onda da koristis "GROUP BY pas.id_pas", ali onda dobijas red sa starim cipom, pasosem.
Moras da slozis sa ORDER BY (mozda bi funcionisalo sa "ORDER BY vlasnistvo.datum DESC, mikrocip.datum DESC, pasos.datum DESC").
testiraj malo...

 
Odgovor na temu

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

[ Pregleda: 2087 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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