COUNT и total c двух колонок

246
26 ноября 2016, 20:19

Задача - необходимо подсчитывать и выводить 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(с первой колонки)+...(со второй колонки)"

Answer 1

На данный момент реализовал банальным методом:

<?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 ... Тоесть каждой переменнойс помощью того же цикла выдал уникальный клас и по нему просумирова со всех полей. Хотя реально это не вариант как можно оптимизировать данное "рукоблудство"

Answer 2
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)
READ ALSO
Что такое &ldquo;федеративные таблицы&rdquo; в Mysql?

Что такое “федеративные таблицы” в Mysql?

Что такое "федеративные таблицы" в Mysql?

242
Ошибка в phpsrorm. No data sources are configured to run this SQL and provide advanced code assistance

Ошибка в phpsrorm. No data sources are configured to run this SQL and provide advanced code assistance

Warning: mysql_query() expects parameter 1 to be string, object given in\account

888
VMWare player вернуть место

VMWare player вернуть место

VMware® Workstation 12 Player на Windows 7 Версия 121

235
как записать сумму полей в в базу mysql

как записать сумму полей в в базу mysql

Проблема: не могу передать ответ в MySQL таблицу по нажатию на кнопку

276