|
| Billing system Fra : Jesper Nielsen |
Dato : 07-11-04 13:43 |
|
Hej gruppe!
Jeg er pt. ved at lave et mindre billing system, men er løbet ind i en mur,
og kan ikke lige gennemskue hvordan jeg kommer videre.
Følgende 2 tabeller er lavet:
CREATE TABLE `__billing_customers_documents_list` (
`ID` bigint(20) unsigned NOT NULL auto_increment,
`CustCode` varchar(25) NOT NULL default '',
`DocNumber` varchar(10) default NULL,
`DocType` char(2) NOT NULL default '',
`DocDate` date NOT NULL default '0000-00-00',
`DocDueDate` date NOT NULL default '0000-00-00',
`Status` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`ID`),
KEY `Idx_DefaultSearch` (`CustCode`,`Status`),
KEY `Idx_Dunning` (`DocType`,`DocDueDate`,`Status`)
) TYPE=MyISAM
CREATE TABLE `__billing_customers_documents_lines` (
`ID` bigint(20) unsigned NOT NULL auto_increment,
`DocId` bigint(20) unsigned NOT NULL default '0',
`ProductId` varchar(15) NOT NULL default '',
`LineText` varchar(60) NOT NULL default '',
`LineAmount` float NOT NULL default '0',
PRIMARY KEY (`ID`),
KEY `Idx_DefaultSearch` (`DocId`)
) TYPE=MyISAM
__billing_customers_documents_list indeholder de enkelte fakturaers
"stamdata", mens __billing_customers_documents_lines indeholder de linier,
som er på de enkelte fakturaer.
Hvad jeg gerne vil nu, er på et website at vise en liste over de fakturaer,
som en bestemt kunde har, således:
|DocNumber|DocType|DocDate|DocDueDate|TotalAmount|
De første 4 rækker er lette nok at hente ud af
__billing_customers_documents_list, men hvordan finder jeg frem til
TotalAmount? Det må næsten være noget med en JOIN af en art, men jeg kan
ikke lige gennemskue det.
Nogen som kan hjælpe? Kommentarer til databaseopbygningen generelt modtages
ligeledes med kyshånd.
--
Mvh. Jesper
| |
///JJ (07-11-2004)
| Kommentar Fra : ///JJ |
Dato : 07-11-04 14:12 |
|
Jesper Nielsen wrote:
> Jeg er pt. ved at lave et mindre billing system, men er løbet ind i
> en mur, og kan ikke lige gennemskue hvordan jeg kommer videre.
>> DocNumber|DocType|DocDate|DocDueDate|TotalAmount|
Jeg ved ikke hvordan med performance, og du skriver ikke noget om hvilken DB
du har eller dit select-statement, men en subselect vil kunne trække summen
op til dig.
--
Mvh
///JJ
| |
Jesper Nielsen (07-11-2004)
| Kommentar Fra : Jesper Nielsen |
Dato : 07-11-04 14:13 |
|
> >> DocNumber|DocType|DocDate|DocDueDate|TotalAmount|
>
> Jeg ved ikke hvordan med performance, og du skriver ikke noget om hvilken
DB
> du har eller dit select-statement, men en subselect vil kunne trække
summen
> op til dig.
Jeg bruger MySQL. Performance betyder i første omgang ikke så meget, men det
må alligevel godt kunne skalere - kunderne vil på et senere tidspunkt kunne
se egne fakturaer, hvorfor der måske kan opstå et problem med en dårlig
udtænkt query.
--
Mvh. Jesper
| |
Stig H. Jacobsen (08-11-2004)
| Kommentar Fra : Stig H. Jacobsen |
Dato : 08-11-04 10:35 |
|
On Sun, 7 Nov 2004 13:42:32 +0100, Jesper Nielsen wrote:
> Jeg er pt. ved at lave et mindre billing system
...
> `LineAmount` float NOT NULL default '0',
Pas iøvrigt på med at bruge floating point felter til penge. Før
eller siden render du ind i besynderlige afrundingsfejl.
NUMERIC(x,2) er meget mere velegnet her.
--
Stig - remove the 'no's to send me mail
Synchronize your bookmarks: http://syncit.goth.dk/
| |
Jesper Nielsen (08-11-2004)
| Kommentar Fra : Jesper Nielsen |
Dato : 08-11-04 21:41 |
|
> Pas iøvrigt på med at bruge floating point felter til penge. Før
> eller siden render du ind i besynderlige afrundingsfejl.
>
> NUMERIC(x,2) er meget mere velegnet her.
Jeg bruger udelukkende hundrededele - 100 = 1 kr./$/£/? osv.. Jeg sørger så
for at præsentere det korrekt overfor brugeren af systemet i frontenden.
--
Mvh. Jesper
| |
|
|