Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kalkulator odsetek
Forum PHP.pl > Forum > Bazy danych > MySQL
siwy__
Witam
Mam problem ze zrobieniem takie kalkulatora dla kilku faktur i wpłat.Może ktoś przerabiał coś podobnego i trochę mi pomoże.
Mam 2 tabele:
CREATE TABLE `naleznosci` (
`id` int(6) NOT NULL,
`faktura` varchar(255) default NULL,
`kwota` float(9,2) default '0.00',
`termin` date default NULL,
`idd` int(5) NOT NULL auto_increment,
PRIMARY KEY (`idd`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=cp1250;

INSERT INTO `naleznosci` VALUES ('1', 'xxxx', '10.00', '2015-06-08', '1');
INSERT INTO `naleznosci` VALUES ('1', 'yyyy', '5.00', '2015-11-18', '2');
INSERT INTO `naleznosci` VALUES ('1', 'zzzz', '5.00', '2005-10-01', '3');

i
CREATE TABLE `wplaty` (
`id` int(11) NOT NULL auto_increment,
`naleznosci_id` int(11) NOT NULL,
`kwota` float(10,2) default NULL,
`data_wplaty` date default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=cp1250;

INSERT INTO `wplaty` VALUES ('1', '1', '50.00', '2015-11-16');
INSERT INTO `wplaty` VALUES ('2', '1', '4.00', '2006-07-14');

Problem polega na tym że z tych 2 muszę uzyskać trzecią tabele w której będa pola:
naleznosci.id,naleznosci.faktura,naleznosci.kwota,naleznosci.termin,wplaty.kwota
,wplaty.data_wplaty

ale z pewnymi warunkami (wpłaty nie są na faktury, trzeba je zaliczać na najstarszą):
- jeśli kwota wpłaty jest równa kwocie faktury to wszystko mamy w jednym wierszu
- jeśli kwota jest większa od faktury do wypełniamy ją do wysokości faktury a resztę przenosimy na drugą fakturę (do kolejnego wiersza)
- kolejną wpłatę (w trzecim wierszu) wpisujemy na tą fakturę która jeszcze nie jest dopełniona (oczywiście umniejszoną o resztę wcześniejszej wpłaty) itd.

Jest to dość skomplikowana operacja i nie bardzo mogę sobie z nią poradzić. Próbowałem coś na kursorach ale poległem Może ktoś coś pomoże.
DarkAbso
Nie widzę tutaj potrzeby, aby obrabiać dane kursorem. Zrób porządny SELECT (poczytaj o CASE i UNION - pewnie tym załatwisz problem), a wpakowanie danych do tabeli to poczytaj o :
-INSERT INTO (kolumny) SELECT (jeżeli chcesz wpakować dane do istniejącej tabeli)
-SELECT INTO (nowa tabela) FROM (jeżeli chodzi o założenie nowej tabeli)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.