Avatar billede hoppe11 Nybegynder
26. juli 2007 - 04:24 Der er 3 kommentarer og
1 løsning

SUM med JOIN ON og IN

Jeg har et besked system hvor jeg skal finde den samlede datalængde, og hver besked kan have vedhæftet flere filer

msg:
--------
id
owner_user_id
subject
msg

data:
--------
id
filesize

msg_data:
--------
msg_id
data_id

Nedenstående query virker for så vidt som den skal. Den finder summen af hver enkelt besked inkl. de tilhørende/vedhæftede filer. Hvordan kan jeg få den til at trække den samlede sum ud fra alle beskederne - eller bærer jeg mig forkert ad?

SELECT LENGTH(msg.subject)+LENGTH(msg.msg)+25+SUM(data.filesize)
FROM msg msg
LEFT JOIN data data ON data.id IN (SELECT data_id FROM msg_data WHERE msg_id=msg.id)
WHERE msg.owner_user_id=1
GROUP BY msg.id
Avatar billede kalp Novice
26. juli 2007 - 08:24 #1
måske kan du  bare

SELECT LENGTH(msg.subject)+LENGTH(msg.msg)+25+SUM(data.filesize)
FROM msg msg
LEFT JOIN data data ON data.id IN (SELECT data_id FROM msg_data)
WHERE msg.owner_user_id=1
GROUP BY msg.id
Avatar billede hoppe11 Nybegynder
26. juli 2007 - 11:46 #2
min query virker som den skal.. den trækker rækkerne ud og tæller rigtigt sammen, men jeg skal bruge den sammenlagte sum af alle rækker og ikke hver besked i hver række
Avatar billede hoppe11 Nybegynder
26. juli 2007 - 12:36 #3
hvis jeg smider en SUM() omkring hele min select:

SELECT SUM(LENGTH(msg.subject)+LENGTH(msg.msg)+25+SUM(data.filesize))
FROM msg msg
LEFT JOIN data data ON data.id IN (SELECT data_id FROM msg_data WHERE msg_id=msg.id)
WHERE msg.owner_user_id=1
GROUP BY msg.id

- får jeg:

#1111 - Invalid use of group function
Avatar billede hoppe11 Nybegynder
13. september 2007 - 09:54 #4
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