Ved ikke hvilken database du bruger men syntaxen er noget i stil med:
select SUM( (SELECT SUM( ol.antal*ol.pris ) FROM tblorderlines ol where ol.ordreid = o.id ) + (SELECT SUM( (t.timer+t.tillaegstimer)*b.timepris from tbltimer t join tblbruger b on t.brugerid = b.id where t.ordreid = o.id ) ) FROM tblorders
Jeg er desværre ikke vant til at bruge sub selects så jeg kan ikke selv se de åbenlyse fejl, men den siger:
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 'from tbltimer t join tblbruger b on t.brugerid = b.id where t.ordreid = o.id ) )' at line 2
Sorry prøv: select SUM( (SELECT SUM( ol.antal*ol.pris ) FROM tblorderlines ol where ol.ordreid = o.id ) + (SELECT SUM( (t.timer+t.tillaegstimer)*b.timepris) from tbltimer t join tblbruger b on t.brugerid = b.id where t.ordreid = o.id ) ) FROM tblorders
Jo det tror jeg den gør Der bruges 2 subselects en der giver prisen for de eventuelle orderlines og en for timeprisen, hvis der ikke er nogen ordre linier der matcher dit ordre id så bliver summen 0 og ligeledes med time priserne. Ups kan lige se der mangler et alias til sidst i sætningen:
select SUM( (SELECT SUM( ol.antal*ol.pris ) FROM tblorderlines ol where ol.ordreid = o.id ) + (SELECT SUM( (t.timer+t.tillaegstimer)*b.timepris) from tbltimer t join tblbruger b on t.brugerid = b.id where t.ordreid = o.id ) ) FROM tblorders o
Den sql jeg har postet 13:55 har alias og den parentes der manglede. Den finder kun en samlet pris hvis der både er materialer og timer i ordre. Hvis der mangler enten materialer eller timer, poster den NULL
Var så lidt, sjovt nok sidder jeg også lige og laver ordre håndtering lige nu :-) Dog med MS Sqlserver.
Synes godt om
Ny brugerNybegynder
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.