Avatar billede invisibleman Nybegynder
04. januar 2002 - 13:57 Der er 10 kommentarer og
1 løsning

GROUP BY

Hvordan bruges GROUP BY korrekt ?

SELECT COUNT(posts.id) AS postcount,questions.userid,users.username,questions.subject,questions.qtext,UNIX_TIMESTAMP(questions.created) AS created,questions.deadline,questions.files,questions.points,questions.status,CONCAT(maincats.name,\': \',subcats.name) AS catname FROM questions INNER JOIN subcats ON subcats.id=questions.catid INNER JOIN maincats ON subcats.parent=maincats.id INNER JOIN users ON users.id=questions.userid INNER JOIN posts ON posts.qid=questions.id WHERE questions.id=1

Jeg skal have en GROUP BY in efter min WHERE pga. min COUNT(), men hvad skal jeg GROUP\'e på i sådan en her ? Hvis jeg f.eks. GROUP\'er på posts.userid så får jeg ingen records (tabellen posts indeholder pt. ingen records)
Avatar billede htx98i17 Professor
04. januar 2002 - 14:04 #1
jeg kan ikke gennemskue den så jeg ved slet ikke om du kan bruge GROUP BY,  men du skal GROUP BY noget unikt... :) hehe
Avatar billede htx98i17 Professor
04. januar 2002 - 14:08 #2
mener du ikke posts.id i stedet for posts.userid?
Avatar billede invisibleman Nybegynder
04. januar 2002 - 14:12 #3
jeg aner ikke hvad man skal GROUP\'e på .. derfor jeg spørger :o)
Avatar billede htx98i17 Professor
04. januar 2002 - 14:21 #4
du ved hvad GROUP BY gør, ik ?
prøv at sig GROUP BY posts.id da det vel er et unikt id?
Avatar billede invisibleman Nybegynder
04. januar 2002 - 14:24 #5
GROUP BY grouper vel ens/lign. feltværdier ?

Jeg fik løst problemer ved at bruge en LEFT JOIN på posts tabellen istedet for INNER...

SELECT COUNT(posts.id) AS postcount,questions.userid,users.username,questions.subject,questions.qtext,UNIX_TIMESTAMP(questions.created) AS created,questions.deadline,questions.files,questions.points,questions.status,CONCAT(maincats.name,\': \',subcats.name) AS catname FROM questions INNER JOIN subcats ON subcats.id=questions.catid INNER JOIN maincats ON subcats.parent=maincats.id INNER JOIN users ON users.id=questions.userid LEFT JOIN posts ON posts.qid=questions.id WHERE questions.id=$id GROUP BY posts.id

er SQL\'et nu ...

htx98i17, du får 15 point som tak for dit posts.id, selvom det ikke var det der løste problemet.
Avatar billede invisibleman Nybegynder
04. januar 2002 - 14:25 #6
uhm .. du har ik svaret ?
Avatar billede htx98i17 Professor
04. januar 2002 - 14:26 #7
det er slet ikke sikkert at GROUP BY kunne bruges i denne sammenhæng :)
jeg skal ikke have point for det...
Avatar billede invisibleman Nybegynder
04. januar 2002 - 14:28 #8
GROUP BY *skal* bruges når man bruger COUNT(), MIN(), MAX() og andre grouping funktioner sammen med et normalt select .. men okay .. hvis du synes ..
Avatar billede htx98i17 Professor
04. januar 2002 - 14:31 #9
ja det er klart :-)
så var det jo egentlig et rigtigt svar på dit egentlige spm, selvom der var et andet problem :)
Avatar billede invisibleman Nybegynder
04. januar 2002 - 14:39 #10
Har du jo sådan set ret i (sorry .. jeg sidder og halvsover ..) vil du ha\' de 15 point ?
Avatar billede htx98i17 Professor
04. januar 2002 - 14:41 #11
nææ hehe
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