hey allemaal, ben nog steeds bezig met een weblog.
nou heb ik op de hoofdpagina een pagina waar ik de door mij geplaatste berichten weergeef. en daaronder een linkje naar het artikel, met de bijbehorende reacties.
maar ik zou graag willen dat dat linkje ipv "ga naar reacties" , "reacties <aantal>" word. kan iemand mij daar mee helpen? want de bijbehorende query schijnt erg lastig te zijn..
ja ik ben wel bekend met COUNT maar het is zo dat vanuit 1 tabel het nieuwsID moet worden gehaald, die moet worden vergeleken met het zelfde nieuwID in een andere tabel, en daar alle bijbehorende berichten bij tellen. en dat is net even te ingewikkeld om alleen met COUNT te doen ;)
als het goed is moet het hier mee lukken, maar ik snap dit niet:
SELECT b.*, COUNT(R.*)FROM berichten a s b LEFT JOIN reacties a s r ON b.berichtID = r.berichtID GROUP BY b.berichtID.
dit is wat een php/sql guru voor mij heeft opgeschreven een keer, maar het is niet aangepast voor mijn database, en ik snap er te weinig van om het aan te passen
Mij wel. Er staat hier wel een tutorial over joins, maar ik ben niet zo'n mysql-goeroe.
(Ik moet wel zeggen dat hij voor een goeroe wel vage namen gebruikt. Vooral goeroes moeten toch weten dat code goed begrijpbaar moet zijn? Deze gebruikte alleen maar a, b en s)
Mijn poging vanaf het begin:
SELECT berichten.*, COUNT(reacties.*) FROM berichten, reacties WHERE reacties.id = berichten.id [i]AND berichten.name = 'dat wat ik zoek'[/i]
Het scheefgedrukte is niet noodzakelijk.
Trouwens, nu ik even kijk, heb ik bijna hetzelfde als je goeroe!
SELECT b.*, COUNT(R.*)FROM berichten as b LEFT JOIN reacties as r ON b.berichtID = r.berichtID GROUP BY b.berichtID
Het is niet a s, maar 'as', van 'als'.
edit:
Misschien werkt deze wel of begrijp je hem beter(voluit geschreven versie:)
SELECT berichten.*, COUNT(reacties.*) FROM berichten LEFT JOIN reacties ON berichten.berichtID = reacties.berichtID GROUP BY berichten.berichtID
ah maar hij klopt niet voor mijn tabellen en ik weet niet hoe ik em aan moet passen
in 1 tabel heb ik nieuwsID en content etc.
in de andere logid, nieuwsID, bericht en poster.
kan je me maybe daarmee helpen?
dus wat is een tabel in SELECT berichten.*, COUNT(reacties.*) FROM berichten LEFT JOIN reacties ON berichten.berichtID = reacties.berichtID GROUP BY berichten.berichtID en wat is een row?
Een tabel is dat wat voor de punt staat, en de colom is dat wat achter de punt staat. Dus
berichten.*
zijn alle colommen van de berichten-tabel, en
berichten.berichtID
is de colom genaamd berichtID in de berichten tabel.
Hier nog even een simpel stukje om de uitover mooi overzichtelijk te zien:
<?php
//je connect en selectdb gebeuren hier
$results = mysql_query("SELECT berichten.*, COUNT(reacties.*) FROM berichten LEFT JOIN reacties ON berichten.berichtID = reacties.berichtID GROUP BY berichten.berichtID");
while($row = mysql_fetch_array($results)){
echo "<pre>".print_r($row, true)."</pre>";
}
?>