Ich bin auf der Suche nach einem saubereren Weg, dies zu tun. Mein Code funktioniert, aber ich weiß, dass es besser sein kann. Ich habe drei Tabellen: eine mit einer Liste von Kategoriengruppen, eine mit einer Liste von Kategorien, die mit Kategoriengruppen verknüpft sind, und eine mit einer Liste von Nachrichten, die mit den Kategorien verknüpft sind.PHP: MYSQL COUNT Abfrage mit verknüpften Tabellen
Ich muss alle Namen der Kategoriegruppen durchlaufen, gefolgt von den Namen der Kategorien in den Kategoriengruppen, wobei auch die Anzahl der Nachrichtenartikel in jeder Kategorie aufgeführt wird.
Ich habe drei Tabellen: CategoryGroups, Categories, News.
Ich habe eine Reihe von Abfragen. Die ersten Anfragen alle Zeilen aus der CategoryGroups Tabelle:
$result = mysql_query('
SELECT cat_group_id, cat_group_name FROM CategoryGroups
');
Die zweite Abfrage innerhalb der geschleiften Ergebnisse der ersten Abfrage und findet alle Kategorien, die eine Nachricht haben und zu einer bestimmten Kategorie Gruppe verknüpft:
<?php
while($row = mysql_fetch_assoc($result)){
$id = $row['cat_group_id'];
$name = $row['cat_group_name'];
echo "<h3>$name</h3>";
$sql = mysql_query("
SELECT category_id, title FROM `Categories`
WHERE cat_group_id = $id
AND category_id IN
(SELECT news.category_id FROM news)
");
while($row = mysql_fetch_assoc($sql)) {
$title = $row['title'];
$catid = $row['category_id'];
$numbers = mysql_query("
SELECT * FROM news
WHERE category_id =$catid"
);
$nums = mysql_num_rows($numbers);
echo "$title ($nums)<br/>\n";
}
?>
Ich möchte dies auf eine oder zwei Abfragen beschränken, mit Effizienz im Auge. Ich weiß, dass dies möglich ist, aber ich war nicht erfolgreich bei meinen Versuchen.
danke.
yup. nahm mich ein zweites Mal und sah es mir an, weil er mich etwas verwirrt hatte. – DForck42