login  Naam:   Wachtwoord: 
Registreer je!
 Forum

INNER JOIN met 3 tabellen. (Opgelost)

Offline Louis_ - 11/04/2010 19:38
Avatar van Louis_Nieuw lid Ik ben bestwel een beginner met php, dus het zal wel een domme vraag zijn, maar ik heb deze code geschreven:

  1. $reactie = mysql_query("
  2. SELECT
  3. r.nrid,
  4. r.tekst AS reactie,
  5. r.datum AS datumreactie,
  6. r.lid,
  7. r.nid,
  8.  
  9. l.lid,
  10. nickname AS reageerder,
  11. avatar,
  12.  
  13. n.nid
  14. FROM lid AS l
  15. INNER JOIN (nieuws AS n
  16. INNER JOIN nieuwsreactie AS r
  17. ON r.nid = n.nid)
  18. ON r.lid = l.lid
  19. ORDER BY r.datum
  20. ") or die (mysql_error());


En ik krijg geen error, maar de code doet niet wat ik eigenlijk wil. Ik wil namelijk dat bij elk nieuwsbericht alle reacties komen met hetzelfde "nid" en dat bij elke reactie de naam die bij het "lid" komt dat bij de reactie staat.

Maar wat ik krijg is - geloof ik - alleen de nieuwste reactie, en die komt bij alle nieuwsberichten te staan..

Ik heb wel heel veel gelezen over Joins, maar ik snap er niet echt veel van..
Dus ik zou het fijn vinden als iemand me dat uit kan leggen. (:

4 antwoorden

Gesponsorde links
Offline genkstar - 11/04/2010 19:49
Avatar van genkstar Nieuw lid
  1. SELECT [kolommen] FROM nieuws_reacties reacties, nieuws WHERE reacties.nieuws_id = nieuws.nieuws_id


Zoiets wil je doen zeker?
Offline Louis_ - 11/04/2010 19:57 (laatste wijziging 11/04/2010 19:58)
Avatar van Louis_ Nieuw lid Ongeveer. 

Dit is is wat ik wil:

  1. SELECT * FROM nieuwsreactie, lid, nieuws WHERE nieuwsreactie.nid = nieuws.nid AND nieuwsreactie.lid = lid.lid
Offline Martijn - 11/04/2010 19:59
Avatar van Martijn Crew PHP t laatste stuk van je JOIN is onjuist, moet zo zijn:

  1. INNER JOIN tabel2 AS t2 ON (tabel1.id = t2.id)
  2. INNER JOIN tabel3 AS t3 ON (tabel1.id = t3.id)
  3. INNER JOIN tabel4 AS t4 ON (tabel1.id = t4.id)
Offline Louis_ - 11/04/2010 20:11 (laatste wijziging 24/04/2010 15:09)
Avatar van Louis_ Nieuw lid Bedankt. 

Nu heb ik dit:
  1. SELECT
  2. r.nrid,
  3. r.tekst AS reactie,
  4. r.datum AS datumreactie,
  5. r.lid,
  6. r.nid,
  7.  
  8. l.lid,
  9. nickname,
  10. avatar,
  11.  
  12. n.nid
  13. FROM nieuwsreactie AS r
  14. INNER JOIN nieuws AS n ON (r.nid = n.nid)
  15. INNER JOIN lid AS l ON (r.lid = l.lid)
  16. ORDER BY r.datum DESC


Maar om de een of andere reden krijg ik nu (nogsteeds) bij alle nieuwsberichten de nieuwste reactie met de laagste 'nid'.  

Opgelost. 

Sommige records bevatten te weinig data waardoor de query er niets mee kon (en die records dus niet getoond werden). Verder had ik "if" in plaats van "while" gebruikt bij het uitlezen van de data, waardoor er dus maar 1 record getoond werd.  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.189s