Задача - необходимо подсчитывать и выводить COUNT с двух колонок, в которых находятся числа от 1 до 30. Имеем следующий код
$query="SELECT nam1 , COUNT(*) AS total FROM lottoindex WHERE nam1 > 0 GROUP BY nam1 ";
$rs = mysql_query($query);
while($row = mysql_fetch_array($rs)) {
echo $row['nam1'];
echo ' ';
echo $row['total'];
echo '<br>';
}
Получаем результат
1 = 714
10 = 227
11 = 215
12 = 187
...
Вместо одной колонки nam1 нужно сделать что-то типа total nam1 + total nam2 И выглядело это так 1 = "714(с первой колонки)+...(со второй колонки)"
На данный момент реализовал банальным методом:
<?php
$query="SELECT nam3 , COUNT(*) AS total FROM lottoindex
WHERE nam3 > 0 GROUP BY nam3
ORDER BY nam3+ 0 ASC
";
$rs = mysql_query($query);
while($row = mysql_fetch_array($rs)) {
$headers3 .= "<th> {$row['nam3']} </th>";
$col3 .= "<td><div class='{$row['nam3']}_totalprice'> {$row['total']} </div> </td>";
}
echo "<table><tr>$headers3</tr><tr>$col3</tr></table>";
?>
<?php
$query="SELECT nam4 , COUNT(*) AS total FROM lottoindex
WHERE nam4 > 0 GROUP BY nam4
ORDER BY nam4+ 0 ASC
";
$rs = mysql_query($query);
while($row = mysql_fetch_array($rs)) {
$headers4 .= "<th> {$row['nam4']} </th>";
$col4 .= "<td><div class='{$row['nam4']}_totalprice'> {$row['total']} </div> </td>";
}
echo "<table><tr>$headers4</tr><tr>$col4</tr></table>";
?>
.... И так шесть раз, обернув все это дело в див с display:none далее с помощью js
<td>
<script>
var sum = 0;
$('.1_totalprice').each(function(){
sum += parseFloat($(this).text()); // Or this.innerHTML, this.innerText
});
document.write(sum);
</script>
</td>
<td>
<script>
var sum = 0;
$('.2_totalprice').each(function(){
sum += parseFloat($(this).text()); // Or this.innerHTML, this.innerText
});
document.write(sum);
</script>
</td>
и так 49 раз =) вставив ручками от 1 до 49 ... Тоесть каждой переменнойс помощью того же цикла выдал уникальный клас и по нему просумирова со всех полей. Хотя реально это не вариант как можно оптимизировать данное "рукоблудство"
select case when nam1 is null then nam2
when nam2 is null then nam1
else nam1 end as nam,
case when nam1 is null then '0 + ' || s2.total
when nam2 is null then s1.total || ' + 0'
else s1.total || ' + ' || s2.total end as total
from (SELECT nam1, COUNT(*) AS total
FROM lottoindex
WHERE nam1 > 0
GROUP BY nam1) s1
FULL JOIN
(SELECT nam2, COUNT(*) AS total
FROM lottoindex
WHERE nam2 > 0
GROUP BY nam2) s2
on s1.nam1 = s2.nam2
Попробуйте такой запрос, например. Он соединяет 2 таблицы с nam1 и nam2.
Вариант для MySQL:
select case when nam1 is null then nam2
when nam2 is null then nam1
else nam1 end as nam,
case when nam1 is null then concat('0 + ', s2.total)
when nam2 is null then concat(s1.total, ' + 0')
else concat(s1.total, ' + ', s2.total) end as total
from (((SELECT nam1, COUNT(*) AS total
FROM lottoindex
WHERE nam1 > 0
GROUP BY nam1) s1
LEFT JOIN
(SELECT nam2, COUNT(*) AS total
FROM lottoindex
WHERE nam2 > 0
GROUP BY nam2) s2
on s1.nam1 = s2.nam2) t1
UNION
((SELECT nam1, COUNT(*) AS total
FROM lottoindex
WHERE nam1 > 0
GROUP BY nam1) s1
RIGHT JOIN
(SELECT nam2, COUNT(*) AS total
FROM lottoindex
WHERE nam2 > 0
GROUP BY nam2) s2
on s1.nam1 = s2.nam2) t2)
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Warning: mysql_query() expects parameter 1 to be string, object given in\account
Проблема: не могу передать ответ в MySQL таблицу по нажатию на кнопку