Avatar billede montago Praktikant
18. januar 2006 - 18:05 Der 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
Avatar billede barklund Nybegynder
18. januar 2006 - 18:12 #1
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)
Avatar billede montago Praktikant
18. januar 2006 - 18:28 #2
det jo lige meget hvad tabellerne indeholder :)

men det er MySQL 4.0.xxx

det jeg spurgte om, var et alternativ til en subselect idet phpMyAdmin/mySQL klager over min select :( eller en rettelse hvis den er forkert...
Avatar billede barklund Nybegynder
19. januar 2006 - 10:48 #3
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 :)
Avatar billede montago Praktikant
19. januar 2006 - 14:32 #4
TBL1, TBL2 og TBL3 ser sådan her ud:

[int id][int col]

det min "rodede" query gør er at
joine TBL1 og TBL2 per id, sum(col) og
joine TBL2 og TBL3 per id, sum(col)*-1

derefter union all på de to
således jeg får differencen imellem de 2 selects af sum(col)
Avatar billede barklund Nybegynder
19. januar 2006 - 16:38 #5
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 :)
Avatar billede montago Praktikant
10. august 2007 - 11:58 #6
MySQL 5.0+ understøtter subselects og unions
Avatar billede montago Praktikant
10. august 2007 - 11:58 #7
lukker
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