Avatar billede yezper Nybegynder
15. november 2004 - 11:06 Der er 3 kommentarer og
1 løsning

Billing system - query

Hej eksperter!

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.
Avatar billede joechr Nybegynder
15. november 2004 - 11:16 #1
Brug eksempelvis en subquery:

select sum (amount) where amount in ( select LineAmount as amount where DocId='det ønskede id)
Avatar billede Slettet bruger
15. november 2004 - 11:18 #2
Husk at subselect kun er understøttet i de nyere MySql versioner.
Avatar billede yezper Nybegynder
15. november 2004 - 21:29 #3
Det ser desværre ikke ud til, at min MySQL server understøtter denne kommando. Følgende fejl fåes:

Error Code : 1064
You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select LineAmount as amount where DocId=1)' at line 1
(30 ms taken)

Andre bud? MySQL version er 4.0.20a-nt.
Avatar billede yezper Nybegynder
17. april 2006 - 16:10 #4
Jeg lukker tråden pga. manglende svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester