[ popmilan76 @ 31.07.2016. 09:32 ] @
Radim neki projekat koji treba da obradjuje clanarine za internet provajdera,i sada imam sifra clana,adresa,grad,i datum kad se upisao ,i on uplacuje za svaki mesec internet,gde mi u bazi postoje i polja mesec(od 1 do 12) i godina (od 2000 pa do ...) oba su number tipa,i sada svako uplacuje za neki mesec,a ono sto meni treba jeste izvestaj za svakog radnika koji mesec nije platio od dana uclanjenja do tekuceg meseca,takodje imam tabele od 1-januar do 12-decembar,koji je u relaciji sa uplatama za radnmik....E,sada znaci treba mi izvestaj odnosno listing meseci koji nije platio ...Recimo da mi u izvestaju izadje Petar Petrovic,pa meseci februar 2016,maj 2016 itd....Kako to najbolje da uradim,ili je mozda bolje da izvlacim iz datuma mesece,pa tako nesto?
[ savkic @ 31.07.2016. 12:29 ] @
Nisi objasnio kako se razlikuju placeni od neplacenih meseci, ako imas u toj tabeli i neko polje preostali dug ili neki flag onda filtriras po tome. Ako je podatak o placanju u nekoj drugoj tabeli onda ukrstis sa njom.
[ popmilan76 @ 31.07.2016. 13:05 ] @
Nisam bas objasnio...Ta neka tabela uplata imace broj meseca koji je platio,meni treba broj meseci koje nedostaju izmedju dva datuma....dakle neki clanid je platio 1,2,3....meni trebaju svi ostali koje nije platio....i naravno i godina....dakle da izadje 4.2016,5.2016....itd
[ savkic @ 31.07.2016. 13:40 ] @
I dalje nije jasno kako ti tabele izgledaju i slično i na osnovu raspoloživih informacija ovde možemo samo da nagađamo šta je dobro rešenje.
Uglavnom ideja pa razradi, ako imaš tabelu gde se upisuje šta je i kad plaćeno onda to ukrstiš sa tabelom gde su obaveze (šta treba da se plati) i kažeš daj mi slogove koji postoje u tabeli obaveza ali ne postoje u tabeli plaćanja.
[ popmilan76 @ 31.07.2016. 13:47 ] @
Imam jednu tabelu,odakle dovlacim sve registrovane clanove,i upisujem ih u tabelu ,koja se zove recimo promet,i tu biram clana,i upisujem broj meseca koji je platio,za januar je broj 1,i naravno godinu,i tu su mi jedno polje je samo meseci a drugo godina,i ne treba mi druga tabela,gde su obaveze,on ima obavezu za svaki mesec od dana uclanjenja danasnjeg meseca....
[ Milan Milosevic @ 31.07.2016. 14:01 ] @
Ja bi to resio nekako ovako

tabela Korisnici
korisnik_id ,Ime. Prezime , ....

tabela Clanarine

Korisnik_id, Mesec, platio(boolean), godina

01,1, da, 2016
01,2, da, 2016
01,3, ne, 2016
kada zelis da vidis ko ti je za koji mesec platio za zadatu godinu filtriras po koloni platio
[ popmilan76 @ 31.07.2016. 14:04 ] @
Da,ali u tom slucaju moram ukucavti to ne,mislim da je suvisno,hteo sam da izbegnem taj korak....da mi izlista sve mesece koji nisu da,od dana uclanjenja do tekuceg meseca....
[ Milan Milosevic @ 31.07.2016. 14:13 ] @
Ovako je pravilno modelovana baza i omogucava jednostavnim SQL upitima pretrazivanje po mnogim paramtrima.
Recimo, jednostavno mozes izfiltrirati korisnika da dobijes koje je mesece platio , a koje nije.
Takode mozes lako da resis problem platisa za dati mesec, tj. ko je platio za trazeni mesec a ko ne.

Ovo da, ne sam ja onako stavio da se lako uoci logika tabele. Mozes da stavis true i false ili 0,1 .
[ popmilan76 @ 31.07.2016. 14:20 ] @
Ma to znam i ja...ali sam mislio da moze i ovako...da u stvari izlista nedostajuce mesece...
[ savkic @ 31.07.2016. 14:31 ] @
> Ma to znam i ja...ali sam mislio da moze i ovako...da u stvari izlista nedostajuce mesece...

Mozes i tako, samo ti treba neki source (druga tabela recimo) koja sadrzi sve mesece (i godine ako treba) i onda ukrstiš tu tabelu i ovu sa prometom i dobićeš mesece (i godine) kojih nema.
[ Milan Milosevic @ 31.07.2016. 14:35 ] @
Sad mi je jasno mi je sta hoces.
Mozes lako SLQ upitom da dobijes spisak meseci kada je uplaceno

Select * from Clanarine where rad korisnik_id = 1 and godina = 2016.

zatim proci koroz tabelu
Code:

var
  Mesec_platio array[1..12] of boolean;
begin

  DataSource1.DataSet.First;
  while not DataSource1.DataSet.eof do
  begin
   Mesec_platio[DataSource1.DataSet.FieldByName('mesec').asInteger] :=true;
   DataSource1.DataSet.Next;
  end;
 for i:=1 to 12 do
   if platio[i] then memo.lines.add(inttostr(I));


ovo sam pisao onako bez delphija pa mozada ima neka greska, ali moze da posluzi kao neka ideja




[Ovu poruku je menjao Milan Milosevic dana 31.07.2016. u 21:04 GMT+1]
[ popmilan76 @ 31.07.2016. 14:38 ] @
A jel moze bez te druge tabele...recimo imam jednu tabelu i biram dva datuma,da mi izlista sve mesece i zatim uporedi sa tabelom meseci koje je platio,i izlista samo one mesece kojih nema u toj tabeli....
[ Milan Milosevic @ 31.07.2016. 15:03 ] @
Evo upita

Code:
SELECT DISTINCT Ime,Meseci.mesec FROM Korisnici,Clanarina,Meseci  
where  Meseci.mesec_id not in (select Clanarina.mesec_id from Clanarina where id =1 ) 
and Korisnici.id =1 and Korisnici.id =Clanarina.id


Ovaj upit radi za SQLite provereno. Potrebno ga je samo malo adaptirati za neku drugu SQL bazu.

U upitu id = 1 sam stavio za prvog korisnika. To treba da promenis kroz kod.

Ovde tabela Meseci ima oblik
Code:
mesec_id     mesec 

1              "januar"
2              "februar"
3              "mart"
4              "april"
5              "maj"
6              "jun"
7              "jul"
8              "avgust"
9              "septembar"
10            "oktobar"
11            "novembar"
12            "decembar"





[Ovu poruku je menjao Milan Milosevic dana 31.07.2016. u 21:20 GMT+1]
[ savkic @ 31.07.2016. 15:18 ] @
> A jel moze bez te druge tabele...recimo imam jednu tabelu i biram dva datuma,da mi izlista sve mesece i zatim uporedi sa tabelom meseci koje je platio,i izlista

Moze, ako napises stored proceduru.