[MySQL] Ook join bij lege velden

Pagina: 1
Acties:

  • Blaise
  • Registratie: Juni 2001
  • Niet online
Ik kom er niet uit. Ik wil de laatste artikelen (tabel articles) laten zien, met de auteur (username uit tabel users) en het aantal reacties (uit tabel comments).

Er zijn dus drie tabellen, waarvan twee tabellen relevant zijn voor mijn probleem: tabel "articles" waar alle artikelen in staan met het unieke veld "articleid", en de tabel "comments" waar onder meer het veld "articleid" staat zodat je weet bij welk artikelen de reacties horen.

Op zich werkt de volgende code prima, behalve als het aantal reacties 0 is: in dat geval klopt "AND a.articleid = c.articleid" niet meer waardoor gelijk het hele artikel niet meer wordt weergegeven.
­
code:
1
2
3
4
5
6
7
8
SELECT a.*, b.username, COUNT(c.articleid) AS numcomments
FROM articles AS a, users AS b, comments AS c
WHERE
   a.userid = b.userid
   AND a.articleid = c.articleid
   AND a.status = 1
GROUP BY a.articleid
ORDER BY 'articleid' DESC


Met de search kwam ik al enkele soortgelijke problemen tegen (o.a. [rml][ MySQL] left join en count met uitkomst 0[/rml], [rml][ MySql] Join, slaat lege velden over[/rml]), maar geen enkele van die topics kwam met een oplossing die ik begreep of toe kon passen.

Weet iemand of er een trucje of goed doordachte oplossing is voor mijn probleem?

  • disjfa
  • Registratie: April 2001
  • Laatst online: 08-01 11:17

disjfa

be

code:
1
2
3
4
5
6
7
8
SELECT a.*, b.username, COUNT(c.articleid) AS numcomments
FROM articles AS a, users AS b
LEFT JOIN  comments AS c ON a.articleid = c.articleid
WHERE
   a.userid = b.userid
   AND a.status = 1
GROUP BY a.articleid
ORDER BY 'articleid' DESC

Left joins zijn ervoor gemaakt.

Je articleid geeft trouwens wel een error aangezien dat in meerdere tabellen voorkomt.

[ Voor 16% gewijzigd door disjfa op 31-05-2005 01:47 ]

disjfa - disj·fa (meneer)
disjfa.nl


  • Blaise
  • Registratie: Juni 2001
  • Niet online
_/-\o_ Bedankt, het werkt gelijk! Ik ga me maar eens in die left joins verdiepen...
Je articleid geeft trouwens wel een error aangezien dat in meerdere tabellen voorkomt
Is dat eigenlijk erg? Want ik zie geen error als ik mysql_error() echo.

[ Voor 56% gewijzigd door Blaise op 31-05-2005 01:54 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Dat werkt? Sorry? Dat hoort niet te werken, lees P&W FAQ - Hoe werkt dat GROUP BY nou eigenlijk? maar eens goed door. Je groupeert niet op alle velden in je SELECT list.

Ik weet dat MySQL het wel pikt, maar je krijgt volkomen onvoorspelbare data terug.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.