Avatar billede nat Nybegynder
03. juli 2006 - 13:20 Der er 19 kommentarer og
1 løsning

Sum af kolonne i 2 tabeller i en query

Hej Eksperter,

Jeg vil gerne have summen af to kolonner, disse to kolonner er i hver sin tabel, når jeg laver summen på én tabel fungerer det fint, men tilføjer jeg den anden tabel går det galt.

Jeg gør følgende:

SELECT sum(Antal.AntalIalt) as Sum1, sum(Antal_LastWeek.AntalIalt) as sum2
FROM Antal, Antal_LastWeek
WHERE  (Antal.Place = 'xx') and (Antal_LastWeek.Place = 'xx')

Hvordan kan jeg gøre dette?
Avatar billede Slettet bruger
03. juli 2006 - 13:26 #1
Noget i stil med:

SELECT SUM(data) FROM
(
  SELECT SUM(AntalIalt) as data FROM Antal WHERE Place='xx'
  UNION
  SELECT SUM(AntalIalt) as data FROM Antal_Last WHERE Place='xx'
)
Avatar billede nat Nybegynder
03. juli 2006 - 14:46 #2
Jeg får da følgende fejl: Line 6: Incorrect syntax near ')'.

Kan ikke se at jeg har skrevet noget galt
Avatar billede Slettet bruger
03. juli 2006 - 14:51 #3
Hmmm. Kan være der skal et par parenteser mere til...


SELECT SUM(data) FROM
(
  (SELECT SUM(AntalIalt) as data FROM Antal WHERE Place='xx')
  UNION
  (SELECT SUM(AntalIalt) as data FROM Antal_Last WHERE Place='xx')
)
Avatar billede arne_v Ekspert
03. juli 2006 - 14:55 #4
proev:

SELECT SUM(data) FROM
(
  (SELECT SUM(AntalIalt) as data FROM Antal WHERE Place='xx')
  UNION
  (SELECT SUM(AntalIalt) as data FROM Antal_Last WHERE Place='xx')
) x
Avatar billede nat Nybegynder
03. juli 2006 - 15:17 #5
arne_v x'et gør forskellen, men hvorfor?
Avatar billede nat Nybegynder
03. juli 2006 - 15:23 #6
men den laver kun en sum, jeg vil have summen for hver af kolonnerne
Avatar billede nat Nybegynder
03. juli 2006 - 15:25 #7
så resultatet bliver noget ala:
antal denne uge  Antal sidste uge
4500              2600
Avatar billede arne_v Ekspert
03. juli 2006 - 15:25 #8
SELECT SUM(x.data) FROM ...
Avatar billede arne_v Ekspert
03. juli 2006 - 15:25 #9
saa drop den ydre SUM
Avatar billede Slettet bruger
03. juli 2006 - 15:28 #10
Hvis du vil have et resultat med summen fra den ene tabel og et resultat med summen fra den anden tabel, så er det meget smartere at bruge to opslag i stedet for at samle dem i et. Jeg havde netop forstået, at du ønskede den samlede sum, siden du ville have dem i en query.
Avatar billede arne_v Ekspert
03. juli 2006 - 15:28 #11
det SELECT output du SELECT'er fra skal have et navn

krav fra SQL
Avatar billede nat Nybegynder
03. juli 2006 - 15:42 #12
Jeg syntes bare at det var umiddelbart nemmere at have i et; skal bruge det til et c#.net datagrid
Avatar billede Slettet bruger
03. juli 2006 - 15:56 #13
Så kan du bare lave en arraylist eller lignende samling med det relevante indhold og bruge som datasource for dit grid.

Men som Arne sagde, kan du også samle dem i den query bare uden sum yderst.
Avatar billede nat Nybegynder
03. juli 2006 - 16:02 #14
Jeps :-) Smider I ikke et svar?
Avatar billede Slettet bruger
03. juli 2006 - 16:17 #15
Joda. Her er fra mig.
Avatar billede arne_v Ekspert
03. juli 2006 - 17:00 #16
jeg frafalder - jeg har kun bidraget med et enkelt x :-)
Avatar billede Slettet bruger
03. juli 2006 - 18:16 #17
Selv om det x var ganske småt, så var det stadig væsentligt for at få skidtet til at virke. Og jeg tror ikke jeg umiddelbart ville være kommet på det, da MySQL så vidt jeg husker ikke kræver navngivning der, og da jeg mest har brug subqueries af typen

SELECT * FROM tabel WHERE felt IN (SELECT...)

og der kræves netop ikke at subquerien navngives.

Men der er naturligvis ingen grund til at slås om at få (eller ikke få) point. Vi har begge langt flere, end vi nogensinde kan få brugt.
Avatar billede nat Nybegynder
06. juli 2006 - 16:13 #18
Sandbox får point så :o)
Avatar billede Slettet bruger
06. juli 2006 - 19:08 #19
Takker.

I mellemtiden har jeg så i et MySQL-spørgsmål set, at den også kræver navngivning i denne situation. Og så fik Arne point for det lille x der ;-)
Avatar billede arne_v Ekspert
06. juli 2006 - 19:24 #20
naa du lagde maerke til den

:-)
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