Hoe tot de juiste query te komen

Status
Niet open voor verdere reacties.

justinos

Gebruiker
Lid geworden
12 nov 2004
Berichten
199
Beste leden,

Ik heb met behulp van het internet zelf een nieuwssysteempje in elkaar gezet (PHP/MySQL). SQL kan ik redelijk schrijven en lezen maar ben geen gevorderde. Dat blijkt uit de volgende situatie. Ik zal het zo kort mogelijk maar toch duidelijk proberen te omschrijven.

3 Bestanden:
nieuwsoverzicht.php - overzicht van alle titels, verder niet belangrijk voor mijn probleem
laatstenieuws.php - overzicht van de laatste 5 artikels
nieuws.php - het nieuwsbericht met de reacties

2 Tabellen
- nieuws (met o.a. 'ID')
- reacties (met o.a. 'TID')

De TID moet uiteraard de reacties linken aan het juiste ID van de nieuws tabel.

Nu wil ik in de laatstenieuws.php bij de berichten weergeven hoeveel reacties er zijn gegeven op het bericht ("Geplaatst op 01-01-11, 3 reacties"). Ik heb zo'n 20 opties en mogelijkheden proberen toe te passen, ook left/inner join, maar het wilt mij niet lukken.

De query is heel simpel:

[SQL]$sql = "SELECT id,titel,bericht,datum,bron,bron_url FROM nieuws ORDER BY id DESC LIMIT 5";[/SQL]

Het is mij nog niet gelukt om de "SELECT COUNT(*) FROM reacties" te verwerken in de hierboven genoemde query.

Wie o wie kan mij naar de juiste oplossing toehelpen?

Alvast mijn dank!
Justin
 
Je moet geen COUNT(*) doen maar een COUNT op de TID van de reactie. Verder moet je de twee tabellen koppelen op de correcte ID met een INNER JOIN.
Daarna moet je een GROUP BY toevoegen waarbij je de reacties van de COUNT groepeerd op de ID van het originele artikel.

Probeer eens of je er dan uitkomt, of laat even zien wat je geprobeerd hebt ;)
 
Je moet geen COUNT(*) doen maar een COUNT op de TID van de reactie. Verder moet je de twee tabellen koppelen op de correcte ID met een INNER JOIN.
Daarna moet je een GROUP BY toevoegen waarbij je de reacties van de COUNT groepeerd op de ID van het originele artikel.

Probeer eens of je er dan uitkomt, of laat even zien wat je geprobeerd hebt ;)

Dank voor je hulp. Kom nog even niet verder dan onderstaande:

[SQL]SELECT n.id,n.titel,n.bericht,n.datum,n.bron,n.bron_url,count(r.tid)
FROM nieuws n
INNER JOIN reacties r,
ON n.id = r.tid
GROUP BY n.id
DESC LIMIT 5[/SQL]
 
Laatst bewerkt:
Iemand nog enig idee wat er in bovenstaande query fout gaat of welke andere mogelijkheid ik heb om te zoeken naar een oplossing?
 
[SQL]SELECT n.id, count(r.tid) as `countReacties`
FROM nieuws AS n
INNER JOIN reacties AS r ON (n.id = r.tid )
GROUP BY n.id
DESC LIMIT 5[/SQL]

Ik kan er niets anders maken dan dit... Wat gaat er mis? Wat krijg je nu te zien?
 
Bedankt, de query werkt nu ! Ik moest INNER JOIN nog wel even aanpassen in LEFT JOIN zodat ook de berichten met 0 reacties weergegeven worden. Vraag opgelost! :D
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan