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

Višestruki left join

[es] :: Access :: Višestruki left join

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

srdjan_m
Programer
St.Pazova

Član broj: 29217
Poruke: 262
*.masel.rs.



+12 Profil

icon Višestruki left join29.03.2010. u 14:43 - pre 171 meseci
Imam problem sa prebacivanjem jednog tipa upita iz MS SQL u MS Access (2003) pa bih zamolio članove koje imaju ideju kako se ovo može rešiti.
U pitanju je aplikacije koja je radila u okruženju VB6/SQL server 2000 i koju prebacujem u Access.

Tabele:

Blagajna
-brojBlagajne*
-zaposleniID
-firmaID
-mesecID
.
.
Firma
-firmaID*
-nazivFirme
-adresa
.
.
Zaposleni
-zaposleniID*
-ime
-adresa
.
.
Mesec
-mesecID*
-naziv

Za svaki zapis u tabeli "Blagajna" se navodi ili ime firme ili ime zaposlenog zbog čega Inner Join ne "igra ulogu". Polje "MesecID" je obavezno tako da postoji za svaki zapis u tabeli "Blagajna".

Upit koji funkcioniše u SQl Serveru:

Select Blagajna.brojBlagajne, Firma.nazivFirme,Zaposleni.ime, mesec.naziv
From Blagajna Inner Join Mesec ON Blagajna.mesecID = mesec.mesecID
Left Join firma ON Blagajna.firmaID=firma.firmaID
Left Join zaposleni ON Blagajna.zaposleniID=zaposleni.zaposleniID
Where........

Hvala

[Ovu poruku je menjao srdjan_m dana 30.03.2010. u 08:14 GMT+1]

[Ovu poruku je menjao srdjan_m dana 30.03.2010. u 08:14 GMT+1]
 
Odgovor na temu

Zoran.Eremija
Zoran Eremija
SYSTEM ANALYST
Freelancer
Beograd

Član broj: 251342
Poruke: 855
91.148.80.*

Sajt: zoraneremija.wix.com/erem..


+47 Profil

icon Re: Višestruki left join29.03.2010. u 15:09 - pre 171 meseci
U tabeli Blagajna stoji vam treceLiceID?????

Ili je neka greska ili je taj atribut u nekoj vezi s necim??? S cime, ne vidi se, jer iz selecta koji ste naveli ne mogu da protumacim?!?!

Jedna od pretpostavki je da je mozda autor u to polje smestao ili podatak iz Firma.FirmaID ili podatak iz Zaposleni.ZaposleniID?!?!?!

Ako je to tako onda je morao problem jedinstvenosti da razresi na nivou podatka ili zona IDent brojeva i svakako kroz aplikaciju da regulise iz izbor unosa.

Znaci prvo da razjasnimo taj problem a onda problem samog upita, iako se iz upita vidi drugacija struktura tabele Blagajna?!?!?!?

[Ovu poruku je menjao Zoran.Eremija dana 29.03.2010. u 16:21 GMT+1]
 
Odgovor na temu

srdjan_m
Programer
St.Pazova

Član broj: 29217
Poruke: 262
*.masel.rs.



+12 Profil

icon Re: Višestruki left join30.03.2010. u 07:13 - pre 171 meseci
Izvinjavam se, moja greska pri pisanju. Zamenio sam to polje za polje "zaposleniID".

U svakom slucaju, aplikacija je u VB6 i treba da se kaci na Access bazu. Kroz aplikaciju se unose kroz tri posebne DataCombo kontrole podaci o firmi ILI zaposlenom ILI trecem licu (osoba van firme) odnosno za koga je vezan trosak iz blagajne i tu nema nikakvih problema kod unosa podataka. Problem je u pregledu istih putem Data Grid kontrole jer access ne podržava formu upita koji sam naveo u prvom postu, a koji je sasvim funkcionalan u SQL serveru. Naravno, ako bih sve te tabele vezao Inner Join-om ne bih nikada u rezultatu dobio ni jedan zapis s obzirom da u svakom od zapisa figuriraju podaci o firmi, zaposlenom ili trecem licu ALI samo jedan od njih, i nikada svi zajedno.
 
Odgovor na temu

Zoran.Eremija
Zoran Eremija
SYSTEM ANALYST
Freelancer
Beograd

Član broj: 251342
Poruke: 855
91.148.80.*

Sajt: zoraneremija.wix.com/erem..


+47 Profil

icon Re: Višestruki left join30.03.2010. u 08:44 - pre 171 meseci
Pretpostavljao sam. Ako je vrednost atributa MesecID NotNull a ostali mogu biti Null zbog prirode stvari tj u jednoj n-torci se ne zna ko ce biti ucesnik u blagajni tako da preostali atributi moraju biti Null. Posto je entitet Blagajna dominantan tj. zelimo imati potpunu informaciju dogadjaja u blagajni tada veze u upitu moraju biti kao u prikazanom selektu

SELECT Blagajna.BrojBlagajne, Firma.NazivFirme, Zaposleni.Ime, Mesec.Naziv
FROM Zaposleni RIGHT JOIN (Firma RIGHT JOIN (Mesec INNER JOIN Blagajna ON Mesec.MesecID = Blagajna.MesecID) ON Firma.FirmaID = Blagajna.FirmaID) ON Zaposleni.ZaposleniID = Blagajna.ZaposleniID;

Primer je dat u prilogu.


Ako je jos prisutno i trece lice tada je model drugaciji i upit je sledeci

SELECT Blagajna.BrojBlagajne, Mesec.Naziv AS NazivMeseca, Firma.NazivFirme, Zaposleni.Ime AS ZaposleniIme, TreceLice.Ime AS TreceLiceIme
FROM TreceLice RIGHT JOIN (Zaposleni RIGHT JOIN (Firma RIGHT JOIN (Mesec INNER JOIN Blagajna ON Mesec.MesecID = Blagajna.MesecID) ON Firma.FirmaID = Blagajna.FirmaID) ON Zaposleni.ZaposleniID = Blagajna.ZaposleniID) ON TreceLice.TreceLiceID = Blagajna.TreceLiceID;



[Ovu poruku je menjao Zoran.Eremija dana 30.03.2010. u 09:56 GMT+1]

Prikačeni fajlovi
 
Odgovor na temu

srdjan_m
Programer
St.Pazova

Član broj: 29217
Poruke: 262
*.masel.rs.



+12 Profil

icon Re: Višestruki left join30.03.2010. u 11:44 - pre 171 meseci
Hvala ti čoveče, spasao si me -:)
Rešio sam to na neki drugi način ali onda taj deo aplikacije estetski ružno (zbog te budzevine) toga tako da se vraćam na ovo što mi je trebalo i što si mi poslao.
Hvala još jednom
 
Odgovor na temu

Zoran.Eremija
Zoran Eremija
SYSTEM ANALYST
Freelancer
Beograd

Član broj: 251342
Poruke: 855
91.148.80.*

Sajt: zoraneremija.wix.com/erem..


+47 Profil

icon Re: Višestruki left join30.03.2010. u 12:39 - pre 171 meseci
E tu nije kraj price...
Vas primer je klasican primer potrebe postavke drugacijeg modela podataka. Problem vise ucesnika kao u vasem primeru blagajne a ima i drugih situacija u realnom svetu resava se primenom modela generalizacije i specijalizacije. Otprilike bi to u vasem slucaju izgledalo kao u prilogu.

Prikačeni fajlovi
 
Odgovor na temu

[es] :: Access :: Višestruki left join

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

Postavi temu Odgovori

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