/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste