SQL UPIT??

Hardware, software, mobiteli, programiranje, internet...

Moderator: Bobi

Post Reply
ibrik
Posts: 440
Joined: 15/01/2005 12:16

#1 SQL UPIT??

Post by ibrik » 05/01/2012 15:14

Moze li mi neko pomoći kako da kroz SQL postavim upit da dobije slijedeće:

Imam neke promete po klijentima na različite datume, npr:

XY na dan 01.01. ima 100KM
XY na dan 02.01. ima 150KM
YY na dan 01.01. ima 200KM
CC na dan 01.01. ima 250KM
CC na dan 02.01. ima 350KM

Kako da postavim upit da mi prvo trazi promet za sve klijente na dan 01.01., zatim promet za sve klijente na dan 02.01. i da to dobijem u tabeli izgleda:

01.01. 02.01.
XY 100KM 150KM
YY 200KM
CC 250KM 350KM



Hvala puno...


User avatar
davorf
Posts: 11086
Joined: 15/02/2008 15:53
Location: lost in thought and lost in time while the seeds of life and the seeds of change were planted...

#2 Re: SQL UPIT??

Post by davorf » 05/01/2012 17:40

Nema potrebe da koristis SQL upit za takve stvari. Previse komplikovano i vrlo neoptimizovano. Puno bolje rjesenje je koristenje Cubea uz obican select.

ibrik
Posts: 440
Joined: 15/01/2005 12:16

#3 Re: SQL UPIT??

Post by ibrik » 05/01/2012 18:10

Moram koristiti SQL jer je to jedino rješenje...nemam gotovu tabelu u kojoj vidim koliko je koji klijent imao prometa za svaki dan, nego mi kod svakog novog datuma mora ponovo računati promet po klijentu pa onda to izbacivati u novoj tabeli...npr:

select b.klijent,
sum(b.promet),
from Tabela_A
where b.klijent like '%'
and b.datum_naloga>='POČETNI DATUM'
and b.datum_naloga<'KRAJNJI DATUM'
group by b.klijent
order by b.klijent

e sad ovaj upit bi mi trebao ponavljati za vise datuma i da mi na kraju izbaci tabelu kao u prvom postu, da ne bi morao za svaki datum posebno postavljati upite, pa onda uvezivati te tabele kroz Excel...

SaMaster
Posts: 927
Joined: 06/03/2005 16:05

#4 Re: SQL UPIT??

Post by SaMaster » 05/01/2012 18:21

davorf wrote:Nema potrebe da koristis SQL upit za takve stvari. Previse komplikovano i vrlo neoptimizovano. Puno bolje rjesenje je koristenje Cubea uz obican select.

Cube? Covjece nemoj se brukati. Za ovakve stvari cube? Pa stavrno svasta ces cuti...

dragan.s
Posts: 2043
Joined: 04/07/2009 00:34

#5 Re: SQL UPIT??

Post by dragan.s » 05/01/2012 18:23

Napravi tabelu koja ce ti sluziti za ove izvjestaje.
Zavrtis petlju sa datumom kao promjenjivom i popunis tabelu. Nije u duhu normalizacije, ali bitan je rezultat.

User avatar
davorf
Posts: 11086
Joined: 15/02/2008 15:53
Location: lost in thought and lost in time while the seeds of life and the seeds of change were planted...

#6 Re: SQL UPIT??

Post by davorf » 05/01/2012 18:24

SaMaster wrote:
davorf wrote:Nema potrebe da koristis SQL upit za takve stvari. Previse komplikovano i vrlo neoptimizovano. Puno bolje rjesenje je koristenje Cubea uz obican select.

Cube? Covjece nemoj se brukati. Za ovakve stvari cube? Pa stavrno svasta ces cuti...
Pa ako imas bolje rjesenje...napisi. A onda vidi koliko ce upit da traje (vjerovatno ne upit nego proc) i koliko jos mogucnosti preslaganja dobije upotrebom cubea, a sta dobije upitom.

User avatar
davorf
Posts: 11086
Joined: 15/02/2008 15:53
Location: lost in thought and lost in time while the seeds of life and the seeds of change were planted...

#7 Re: SQL UPIT??

Post by davorf » 05/01/2012 18:26

dragan.s wrote:Napravi tabelu koja ce ti sluziti za ove izvjestaje.
Zavrtis petlju sa datumom kao promjenjivom i popunis tabelu. Nije u duhu normalizacije, ali bitan je rezultat.
Upravo...a ni optimizacije. Bas me zanima koliko ce trajati kad bude godina (dvije, tri?) i sa vise hiljada klijenata. :roll:

User avatar
davorf
Posts: 11086
Joined: 15/02/2008 15:53
Location: lost in thought and lost in time while the seeds of life and the seeds of change were planted...

#8 Re: SQL UPIT??

Post by davorf » 05/01/2012 18:35

I jos jedno pitanje @dragan.s...jel' to onda znaci da pravi tabelu svaki put po zahtjevu. Jer za period npr. 07.01. - 16.02. nema iste kolone, a ni broj kolona, kao za neki drugi opseg. Uz to, svaki period ne mora imati sve dane, pa i to treba uzeti u obzir. Ili treba da napravi tabelu sirine 365 kolona (pod uslovom da ce izvjestaj biti uvijek unutar jedne godine), sto mi opet nema bas puno smisla.

SaMaster
Posts: 927
Joined: 06/03/2005 16:05

#9 Re: SQL UPIT??

Post by SaMaster » 05/01/2012 18:39

davorf wrote:I jos jedno pitanje @dragan.s...jel' to onda znaci da pravi tabelu svaki put po zahtjevu. Jer za period npr. 07.01. - 16.02. nema iste kolone, a ni broj kolona, kao za neki drugi opseg. Uz to, svaki period ne mora imati sve dane, pa i to treba uzeti u obzir. Ili treba da napravi tabelu sirine 365 kolona (pod uslovom da ce izvjestaj biti uvijek unutar jedne godine), sto mi opet nema bas puno smisla.
Ne znam kako bih ti neke stavri pojasnio, mozda bi bilo dobro da uzmes neku dobru knjigu. I sam primjecujes da cinis istu stvar kao i upitom, s tim da ti je pretpostavka potpuno pogresna. Nece biti za svaku godinu 365 kolona, niti to treba da bude cilj, valjda ti je to jasno...Grupisanje ide na dan i to je sva filozofija

User avatar
davorf
Posts: 11086
Joined: 15/02/2008 15:53
Location: lost in thought and lost in time while the seeds of life and the seeds of change were planted...

#10 Re: SQL UPIT??

Post by davorf » 05/01/2012 18:43

SaMaster wrote:
davorf wrote:I jos jedno pitanje @dragan.s...jel' to onda znaci da pravi tabelu svaki put po zahtjevu. Jer za period npr. 07.01. - 16.02. nema iste kolone, a ni broj kolona, kao za neki drugi opseg. Uz to, svaki period ne mora imati sve dane, pa i to treba uzeti u obzir. Ili treba da napravi tabelu sirine 365 kolona (pod uslovom da ce izvjestaj biti uvijek unutar jedne godine), sto mi opet nema bas puno smisla.
Ne znam kako bih ti neke stavri pojasnio, mozda bi bilo dobro da uzmes neku dobru knjigu. I sam primjecujes da cinis istu stvar kao i upitom, s tim da ti je pretpostavka potpuno pogresna. Nece biti za svaku godinu 365 kolona, niti to treba da bude cilj, valjda ti je to jasno...Grupisanje ide na dan i to je sva filozofija
Pa...ne bih da ulazim u preveliku raspravu, samo mi reci, kad grupise po datumu, sta mu se desi sa klijentima. Jer njemu nije cilj da dobije promet po danima, vec po danima i klijentima. Znaci, fino je napisao

............Dan1.......Dan2......Dan3.......Dan4
Klijent1...150 KM....300 KM....400 KM....100 KM
Klijent2...200 KM....100 KM....300 KM....150 KM
Klijent3...300 KM....180 KM....200 KM....300 KM

Ovo samim grupisanjem po datumima neces dobiti.

User avatar
GAU8
Posts: 4144
Joined: 05/01/2011 09:18
Has thanked: 144 times
Been thanked: 186 times

#11 Re: SQL UPIT??

Post by GAU8 » 05/01/2012 18:47

ibrik wrote:Moze li mi neko pomoći kako da kroz SQL postavim upit da dobije slijedeće:

Imam neke promete po klijentima na različite datume, npr:

XY na dan 01.01. ima 100KM
XY na dan 02.01. ima 150KM
YY na dan 01.01. ima 200KM
CC na dan 01.01. ima 250KM
CC na dan 02.01. ima 350KM

Kako da postavim upit da mi prvo trazi promet za sve klijente na dan 01.01., zatim promet za sve klijente na dan 02.01. i da to dobijem u tabeli izgleda:

01.01. 02.01.
XY 100KM 150KM
YY 200KM
CC 250KM 350KM



Hvala puno...
KAko ti tabele izgledaju?

ibrik
Posts: 440
Joined: 15/01/2005 12:16

#12 Re: SQL UPIT??

Post by ibrik » 05/01/2012 18:50

Upravo mi treba tabela:

............Dan1.......Dan2......Dan3.......Dan4
Klijent1...150 KM....300 KM....400 KM....100 KM
Klijent2...200 KM....100 KM....300 KM....150 KM
Klijent3...300 KM....180 KM....200 KM....300 KM

samo sto mi ne treba za 365 dana, nego radim dekadni izvještaj i treba mi za 10 dana tako da nije puno kolona, samo mi je bitno da uvezem i ne pravim 10 posebnih tabela i povezujem ih, nego da jednim upitom u kojem bi samo promijenio datume i dobio tabelu...

SaMaster
Posts: 927
Joined: 06/03/2005 16:05

#13 Re: SQL UPIT??

Post by SaMaster » 05/01/2012 19:02

davorf wrote:
SaMaster wrote:
davorf wrote:I jos jedno pitanje @dragan.s...jel' to onda znaci da pravi tabelu svaki put po zahtjevu. Jer za period npr. 07.01. - 16.02. nema iste kolone, a ni broj kolona, kao za neki drugi opseg. Uz to, svaki period ne mora imati sve dane, pa i to treba uzeti u obzir. Ili treba da napravi tabelu sirine 365 kolona (pod uslovom da ce izvjestaj biti uvijek unutar jedne godine), sto mi opet nema bas puno smisla.
Ne znam kako bih ti neke stavri pojasnio, mozda bi bilo dobro da uzmes neku dobru knjigu. I sam primjecujes da cinis istu stvar kao i upitom, s tim da ti je pretpostavka potpuno pogresna. Nece biti za svaku godinu 365 kolona, niti to treba da bude cilj, valjda ti je to jasno...Grupisanje ide na dan i to je sva filozofija
Pa...ne bih da ulazim u preveliku raspravu, samo mi reci, kad grupise po datumu, sta mu se desi sa klijentima. Jer njemu nije cilj da dobije promet po danima, vec po danima i klijentima. Znaci, fino je napisao

............Dan1.......Dan2......Dan3.......Dan4
Klijent1...150 KM....300 KM....400 KM....100 KM
Klijent2...200 KM....100 KM....300 KM....150 KM
Klijent3...300 KM....180 KM....200 KM....300 KM

Ovo samim grupisanjem po datumima neces dobiti.

Mrsko mi je pisati rijesenja ako neko nece da se potrudi al evo pogledaj i bez cube-a

select Datum, Naziv, sum(Iznos) from TABELA
group by datum, naziv
order by naziv, datum

Uslov mozes dodati po volji, to mi ovdje nije ni bitno...Jel dobio ono sto trazi?

User avatar
davorf
Posts: 11086
Joined: 15/02/2008 15:53
Location: lost in thought and lost in time while the seeds of life and the seeds of change were planted...

#14 Re: SQL UPIT??

Post by davorf » 05/01/2012 19:06

SaMaster wrote: Mrsko mi je pisati rijesenja ako neko nece da se potrudi al evo pogledaj i bez cube-a

select Datum, Naziv, sum(Iznos) from test.primjer
group by datum, naziv
order by naziv, datum

Uslov mozes dodati po volji, to mi ovdje nije ni bitno...Jel dobio ono sto trazi?
I rezultat je?

01.01...Klijent1...150 KM
02.01...Klijent1...200 KM
02.01...Klijent2...160 KM
03.01...Klijent2...100 KM
03.01...Klijent3...300 KM

I to nije to sto on trazi. Mislis da bih se javio na temu da ne znam osnovni upit u SQLu napraviti? :roll:

SaMaster
Posts: 927
Joined: 06/03/2005 16:05

#15 Re: SQL UPIT??

Post by SaMaster » 05/01/2012 19:08

davorf wrote:
SaMaster wrote: Mrsko mi je pisati rijesenja ako neko nece da se potrudi al evo pogledaj i bez cube-a

select Datum, Naziv, sum(Iznos) from test.primjer
group by datum, naziv
order by naziv, datum

Uslov mozes dodati po volji, to mi ovdje nije ni bitno...Jel dobio ono sto trazi?
I rezultat je?

01.01...Klijent1...150 KM
02.01...Klijent1...200 KM
02.01...Klijent2...160 KM
03.01...Klijent2...100 KM
03.01...Klijent3...300 KM

I to nije to sto on trazi. Mislis da bih se javio na temu da ne znam osnovni upit u SQLu napraviti? :roll:
Kako bolan nije? Pa ovo je isto osim sto si ti to pokuso predstaviti u vidu matrice. Ne kontam koja je razlika izmedju tvog gore sto si napiso i ovoga? Koliko vidim gore iz njegovog upita ocigledno je da zeli sumu za svaki dan...

Edit: Nisam nigdje ni tvrdio da ne znas, samo sam rekao da za cube-om nema potrebe...
Last edited by SaMaster on 05/01/2012 19:11, edited 1 time in total.

xamp
Posts: 1249
Joined: 31/03/2010 18:43
Been thanked: 4 times

#16 Re: SQL UPIT??

Post by xamp » 05/01/2012 19:11

Ne mozes tako to uraditi u SQL-u. Treba ti neki drugi dodatni tool da bi to tako ispisao.

SaMaster
Posts: 927
Joined: 06/03/2005 16:05

#17 Re: SQL UPIT??

Post by SaMaster » 05/01/2012 19:12

xamp wrote:Ne mozes tako to uraditi u SQL-u. Treba ti neki drugi dodatni tool da bi to tako ispisao.
Pa normalno da ne moze ali nema ni potrebe. Uzmes fino npr. Reporting server(tool koji spominjes) i sa ovim upitom napravis matrix report i dobio si sto si htio....

User avatar
davorf
Posts: 11086
Joined: 15/02/2008 15:53
Location: lost in thought and lost in time while the seeds of life and the seeds of change were planted...

#18 Re: SQL UPIT??

Post by davorf » 05/01/2012 19:18

SaMaster wrote:
xamp wrote:Ne mozes tako to uraditi u SQL-u. Treba ti neki drugi dodatni tool da bi to tako ispisao.
Pa normalno da ne moze ali nema ni potrebe. Uzmes fino npr. Reporting server(tool koji spominjes) i sa ovim upitom napravis matrix report i dobio si sto si htio....
Pa ja cijelo vrijeme pricam o tome da ne moze kroz SQL ovako dobiti (odnosno moze, ali je prekomplikovano i neoptimizovano), nego da mu treba alat (Analysis Services Cubeom se recimo moze kreirati Matrix report) :roll:

SaMaster
Posts: 927
Joined: 06/03/2005 16:05

#19 Re: SQL UPIT??

Post by SaMaster » 05/01/2012 19:21

davorf wrote:
SaMaster wrote:
xamp wrote:Ne mozes tako to uraditi u SQL-u. Treba ti neki drugi dodatni tool da bi to tako ispisao.
Pa normalno da ne moze ali nema ni potrebe. Uzmes fino npr. Reporting server(tool koji spominjes) i sa ovim upitom napravis matrix report i dobio si sto si htio....
Pa ja cijelo vrijeme pricam o tome da ne moze kroz SQL ovako dobiti (odnosno moze, ali je prekomplikovano i neoptimizovano), nego da mu treba alat (Analysis Services Cubeom se recimo moze kreirati Matrix report) :roll:

Ne znam kako ti objasniti, jedino da nacrtam. Kakav crni cube za ovo? Pa uzmi otvori Builder fino, i napravi report sa podacima iz sql upita koji sam ti postavio. Nemoj majke ti da uzmem sad ja i da ti napravim...Sve ukupno 7min, nije duze...

dragan.s
Posts: 2043
Joined: 04/07/2009 00:34

#20 Re: SQL UPIT??

Post by dragan.s » 05/01/2012 19:29

davorf wrote:I jos jedno pitanje @dragan.s...jel' to onda znaci da pravi tabelu svaki put po zahtjevu. Jer za period npr. 07.01. - 16.02. nema iste kolone, a ni broj kolona, kao za neki drugi opseg. Uz to, svaki period ne mora imati sve dane, pa i to treba uzeti u obzir. Ili treba da napravi tabelu sirine 365 kolona (pod uslovom da ce izvjestaj biti uvijek unutar jedne godine), sto mi opet nema bas puno smisla.
Nisam ni mislio na trajnu tabelu u kojoj bi se cuvali ti izvjestaji nego privremenu u svrhu generisanja izvjestaja.
Dovoljno je da ima 31 kolonu za dane i jednu kontrolnu za period. Za duze od mjesec neka sumira periode.

uncas
Posts: 522
Joined: 15/10/2005 20:51

#21 Re: SQL UPIT??

Post by uncas » 05/01/2012 19:31

ibrik wrote:Moram koristiti SQL jer je to jedino rješenje...nemam gotovu tabelu u kojoj vidim koliko je koji klijent imao prometa za svaki dan, nego mi kod svakog novog datuma mora ponovo računati promet po klijentu pa onda to izbacivati u novoj tabeli...npr:

select b.klijent,
sum(b.promet),
from Tabela_A
where b.klijent like '%'
and b.datum_naloga>='POČETNI DATUM'
and b.datum_naloga<'KRAJNJI DATUM'
group by b.klijent
order by b.klijent

e sad ovaj upit bi mi trebao ponavljati za vise datuma i da mi na kraju izbaci tabelu kao u prvom postu, da ne bi morao za svaki datum posebno postavljati upite, pa onda uvezivati te tabele kroz Excel...
select a.klijent,b.januar,c.februar
from tabela_klijenti a,(select b.klijent,
sum(b.promet) januar,-- imenuj kolonu da bi je kasnije mogao pozvati
from Tabela_A b
where b.klijent like '%'
and b.datum_naloga>='POČETNI DATUM'
and b.datum_naloga<'KRAJNJI DATUM'
group by b.klijent
order by b.klijent ) b,(select b.klijent,
sum(b.promet) februar,
from Tabela_A b
where b.klijent like '%'
and b.datum_naloga>='POČETNI DATUM'
and b.datum_naloga<'KRAJNJI DATUM'
group by b.klijent
order by b.klijent ) c
where a.klijent=b.klijent(+)
and a.klijent=c.klijent(+) --ovako će ti ostati svi podaci iz tabele a i samo oni koii se slazu iz tabele b,c,d... Bez plusa bi vracalo samo one klijente koji postoje u svim tablicama.Ako ne moze plus(zavisi od sql reportera preko kojega vrsis upit) radi left join.

nadam se da ce ti ovo pomoci.pisao sam na brzinu.

Post Reply