Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 4.299 pregleda

Najnovija ↓

Višestruki left join 29.03.2010. u 15:43 · pre 202 meseca
izmenjeno 2 puta, poslednji put srdjan_m 30.03.2010. u 08:14
  1. srdjan_m30.03.2010. u 08:14zapis iz teksta poruke
  2. srdjan_m30.03.2010. u 08:14zapis iz teksta poruke
#1
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
Re: Višestruki left join 29.03.2010. u 16:09 · pre 202 meseca
izmenjeno 1 put, poslednji put Zoran.Eremija 29.03.2010. u 16:21
  1. Zoran.Eremija29.03.2010. u 16:21zapis iz teksta poruke
#2
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?!?!?!?
Potpis
http://zoraneremija.wix.com/eremijacv
Re: Višestruki left join 30.03.2010. u 08:13 · pre 202 meseca #3
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.
Re: Višestruki left join 30.03.2010. u 09:44 · pre 202 meseca #4
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]
Potpis
http://zoraneremija.wix.com/eremijacv
Re: Višestruki left join 30.03.2010. u 12:44 · pre 202 meseca #5
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
Re: Višestruki left join 30.03.2010. u 13:39 · pre 202 meseca #6
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.
Potpis
http://zoraneremija.wix.com/eremijacv
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme