18. januar 2006 - 18:05Der er
6 kommentarer og 1 løsning
Alternativ til "SELECT * FROM UNION ALL"
Jeg vil med 2 selects finde ud af samlet mængde af de to,
MEN phpMyAdmin klager (givetvis mySQL), derfor: er der et alternativ til følgende SQL ?
SELECT SUM(col) FROM ( ( SELECT T2.id as id, SUM(col) AS col FROM TBL1 T1, TBL2 T2 WHERE T1.ID=T2.ID GROUP BY SUM(col) ) UNION ALL ( SELECT T2.id as id, ( SUM(col)*-1 ) AS col FROM TBL2 T2, TBL3 T3 WHERE T2.ID = T3.ID GROUP BY SUM(col) ) ) GROUP BY id
Hvad er det helt præcist tabellerne indeholder og hvad vil du helt præcist opnå? Og har du mysql 4.1 eller nyere? (siden du bruger subselects, formoder jeg det)
Hvis du "kun" har mysql 4.0.x, så kan du ikke lave subselects. Derudover er det en noget rod query, der sikkert kan laves noget pænere. Derfor ville jeg forstå, hvad du ville opnå, så jeg rent faktisk kan komme med et bud på et alternativ. For jeg forstår grundlæggende ikke din query :)
Kan du ikke blot lave to queries og først den ene sum og derefter den anden sum ud? Jeg kan ikke lige gennemskue, hvordan det skulle kunne lade sig gøre i én, men jeg har nu heller ikke prøvet mig frem :)
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.