Avatar billede supermand69 Nybegynder
29. juni 2006 - 07:35 Der er 1 kommentar og
1 løsning

left join med flere clauses i on

SELECT party.time_cancel, party.time_reg, party.time_start, party.area, party.title, party.flyer, COUNT(user_party.user_id) AS num_user, SUM(party_pics.pic_end-party_pics.pic_start+1) AS num_pic, COUNT(debate.id) AS num_cont
FROM (($DB.party party
LEFT JOIN $DB.user_party user_party ON user_party.party_id='$value')
LEFT JOIN $DB.party_pics party_pics ON party_pics.party_id='$value')
LEFT JOIN $DB.debate debate ON debate.thread_id=party.thread_id && debate.reply_id!=0
WHERE party.id='$value'
GROUP BY party.id

Der bliver ikke returneret nogle fejl, men 'num_user', 'num_pic' og 'num_cont' bliver ikke talt korrekt!?

'num_user' = 6 // men skal give 1
'num_pic' = 75 // men skal give 25
'num_cont' = 6 // men skal give 3
Avatar billede fennec Nybegynder
29. juni 2006 - 08:46 #1
Jeg har selv haft samme problem da jeg ville hente en sum() fra flere tabeller på en gang, men min talte også forkert. Det gør den pga joinen, og jeg fandt IKKE en løsning.

Hvis du prøver at tælle hvor mange rækker der returneres af user_party, party_pics og debate vil du se sammenhængen med de for store tal. Hvis jeg husker rigtig med hvordan den opfører sig så gætter jeg på at tabellerne indvolvere følgende:
user_party 1 række
party_pics 2 rækker
debate 3 rækker

hvorfor num_user er 2x3 gange for stor. party_pics 1*3 gange for stor og num_cont er 1*2 gange for stor. Hvis du joinede en tabel til som havde 3 række ville de 3 tal blive 3 gange så stor.

Min løsnign blev at lave flere selvstændige selects for at trække mine sum's ud.
Avatar billede supermand69 Nybegynder
16. juli 2006 - 15:37 #2
øv :(
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