Я ищу более чистый способ сделать это. Мой код работает, но я знаю, что это может быть лучше. У меня есть три таблицы: один со списком категорий, один со списком категорий, связанных с категориями, и один со списком новостей, связанных с категориями.PHP: запрос MYSQL COUNT со связанными таблицами
Мне нужно прокрутить все имена групп категорий, а затем имена категорий, которые входят в группы категорий, а также количество новостей в каждой категории.
У меня есть три таблицы: КатегорияГруппы, Категории, Новости.
У меня есть набор запросов. Первые запросы все строки из таблицы CategoryGroups:
$result = mysql_query('
SELECT cat_group_id, cat_group_name FROM CategoryGroups
');
Второй запрос находится внутри закольцованных результатов первого запроса и находит все категории, которые имеют новость и привязанные к конкретной категории группы:
<?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";
}
?>
Я хотел бы ограничить это одним или двумя запросами, имея в виду эффективность. Я знаю, что это можно сделать, однако я не добился успеха в своих попытках.
спасибо.
yup. взял меня второй взгляд на это, чтобы понять это, потому что он меня немного смутил. – DForck42