|
[ medixsa @ 06.04.2008. 22:44 ] @
| Pozdrav !!!
Delphi 7
Radi se o master/details tabela sa SQL naredbama -
Spajanje details tabele sa master tabele.
Pitanje ?
Kako jemoguce uraditi DISTINCT polja npr. "BrojRac" u dole navedenom kodu.U dole kodu mi se pojavljuje vise puta jedan te isti broj racuna i iznos i sve ostala.Znam zbog cega je sve ovo,jer detail tabele je spojena preko kljuceva itd.
Negativni rezulatat dobijem:
Broj racuna, Operator,Iznos,SumPDV
*****************************
222 Medin 100 1,23..
111 Medin 200 2,23
234 Medin 300 2,34
222 Medin 100 1,23..
222 Medin 100 1,23..
222 Medin 100 1,23..
222 Medin 100 1,23..
222 Medin 100 1,23..
************************************
Zelim da dobijem rezultat :
Broj racuna, Operator,Iznos,SumPDV
*****************************
222 Medin 100 1,23..
234 Medin 300 2,34
111 Medin 200 2,23
****************************
Kod uzima sve podatke iz mster/details po operateru za period
// Postavlje trenutnog datumna u DatumOd - DatumDo
DatumOd.Date := Now;
DatumDo.Date := now;
QUpit.SQL.Clear;
QUpit.SQL.Add('select * from RacunP r join StavkeRacuna s on r.BrojRac = S.ID where (Datum between "'+DateToStr(DatumOd.Date)+'" and "'+DateToStr(DatumDo.Date)+'" and Operator = "'+frmGlavna.StatusBar1.Panels[3].Text+'")');
QUpit.Open;
LBroj.Caption := inttostr(QUpit.RecordCount);
Nadam se da sam pojasnio problem ?
Hvala svima na ponudjenim odgovorima !!! |
[ Miloš Baić @ 07.04.2008. 07:49 ] @
Da li si probao sa klauzulom GROUP BY!?!
[ _deran_ @ 07.04.2008. 09:53 ] @
Da li si probao sa 'select DISTINCT BrRac, Operator, Iznos, SumPDV....' ?
[ Miloš Baić @ 07.04.2008. 11:25 ] @
Ovako ti je najlakše:
Code:
SELECT DISTINCT t1.[Broj racuna], t2.operator, t2.iznos, t2.sumpdv
FROM
(SELECT [Broj racuna]
FROM
Table1) AS t1
LEFT JOIN
(SELECT [Broj racuna], operator, iznos, sumpdv
FROM
Table1) AS t2
ON t1.[Broj racuna] = t2.[Broj racuna]
[att_img]
[ _deran_ @ 07.04.2008. 11:38 ] @
Ovako je najkrace :)
Code:
SELECT distinct Table1.[broj racuna], Table1.operator, Table1.iznos, Table1.sumPDV
FROM Table1;
[ Miloš Baić @ 07.04.2008. 13:08 ] @
Citat: _deran_: Ovako je najkrace :)
I najlakše... ;)
BTW, predložio sam GROUP BY jer nisam dovoljno pažljivo pročitao zahtev, izvinjavam se zbog toga.
[ medixsa @ 08.04.2008. 21:16 ] @
Hvala Vam puno na prakticnom primjeru !!!
Nesto sam uradio sa kodom npr:
i radi prilicno dobro
// Postavlje trenutnog datumna u DatumOd - DatumDo
DatumOd.Date := Now;
DatumDo.Date := now;
QUpit.SQL.Clear;
QUpit.SQL.Add('select DISTINCT BrojRac,Operator,TB,TBNaziv,Kolicina,preracPDV,Cijena,SumPDV,BezPDV,IznosSUM from RacunP r join StavkeRacuna s on r.BrojRac = S.ID where (Datum between "'+DateToStr(DatumOd.Date)+'" and "'+DateToStr(DatumDo.Date)+'" and Operator = "'+frmGlavna.StatusBar1.Panels[3].Text+'")');
QUpit.Open;
// Drugi upit samo iznos oepratora,sumPDV,bezPDV
QUpit1.SQL.Clear;
QUpit1.SQL.add('select Operator,Sum(IznosSUM) as IznosSUM,SUM(SumPDVr) as sumPDVr,SUM(sumbezPDVr) as sumbezPDVr from RacunP.dbf r join StavkeRacuna s on r.BrojRac = S.ID where (Datum between "'+DateToStr(DatumOd.Date)+'" and "'+DateToStr(DatumDo.Date)+'" and Operator = "'+frmGlavna.StatusBar1.Panels[3].Text+'") GROUP BY Operator');
QUpit1.Open;
LBroj.Caption := inttostr(QUpit.RecordCount);
IzvjOperator.Preview;
[ viking13 @ 09.04.2008. 10:59 ] @
Citat: medixsa:
// Postavlje trenutnog datumna u DatumOd - DatumDo
DatumOd.Date := Now;
DatumDo.Date := now;
Ovo zna da bude veoma problematično ako datum na klijentskoj mašini nije dobro podešen.
Najbolje datum pokupiti direktno iz SQL-a.
[ medixsa @ 09.04.2008. 14:54 ] @
Ok hvala ti na savjetu,vec sam dobio odgovor vezano za dodjeljivanje datuma SQL upitu
[ viking13 @ 09.04.2008. 20:39 ] @
Citat: medixsa: Ok hvala ti na savjetu,vec sam dobio odgovor vezano za dodjeljivanje datuma SQL upitu
Dobio si savet kako da proslediš datum kao parametar. I to je ok.
Ono o čemu je pričam je da ako ti treba trenutno vreme ili datum to pokupiš od servera, a ne sa klijentske mašine. Za firebird se za to koriste CURRENT_TIMESTAMP, CURRENT_TIME i CURRENT_DATE. Pogledaj dokumentaciju za svoj server kako se to radi tamo.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|