К сожалению на форуме для начинающих, не смогли найти решения (зато разобрался во многих вопросах)
Есть две таблицы "Факторы" (fakt) и "Количество голосов за тот или иной фактор" (fakt_cnt)
fakt_cnt состоит из полей fakt_id и cnt. В cnt имеем единицы и нули. (надеюсь понятно обьяснил)
1. Выводим названия факторов.
2. Выводим количество голосов по каждому фактору и сортируем так, чтобы ничего не перемешалось. smile
Получаем что-то вроде:
Фактор_1 5 (голосов)
Фактор_2 3
Фактор_3 2
Фактор_4 1
Фактор_5 0
Цель: не выводить Фактор_5 0 как и все остальные возможные нулевые значения
Что у меня получилось за 2 дня в погоне за идеальным кодом
1. Количество голосов выводит корректно, без нулей
$result_fakt_cnt = mysql_query("SELECT
fakt_cnt.fakt_id,
SUM(fakt_cnt.cnt)
FROM fakt_cnt
LEFT JOIN fakt ON fakt_cnt.fakt_id = fakt.id
GROUP BY fakt_cnt.fakt_id
HAVING SUM(fakt_cnt.cnt) > 0
ORDER BY SUM(fakt_cnt.cnt) DESC", $db);
$fakt_cnt = mysql_fetch_array($result_fakt_cnt);
do{
printf("<div>%s</div>",$fakt_cnt["SUM(fakt_cnt.cnt)"]);
}
while ($fakt_cnt = mysql_fetch_array($result_fakt_cnt));
А названия никак не хочет (Варианты я приводить не буду, мне кажется я уже всё перепробовал, но правильно сформировать запрос не получилось.)
Код, который выводит все значения:
$result_fakt = mysql_query("SELECT fakt.id, fakt.name FROM fakt
LEFT JOIN fakt_cnt ON fakt.id = fakt_cnt.fakt_id
GROUP BY fakt_cnt.fakt_id
ORDER BY SUM(fakt_cnt.cnt) DESC", $db);
$fakt = mysql_fetch_array($result_fakt);
do{
printf("<div>%s</div>",$fakt["name"]);
}
while ($fakt = mysql_fetch_array($result_fakt));
P.S. Всё находиться в начальной стадии разработки, поэтому ешё возможны кординальные изменения. Если есть возможность как-то иначе организовать процесс, пожалуйста, посоветуйте.
С уважением
Андрей
Отредактированно Doxtor (15.04.2011 15:02:14)