2015-04-20 2 views
1

Приветом основном моя цель состоит в том, чтобы получить общее количество веса и его форма суммы определенного диапазон, например:многомерное значения массива с выбором между - PHP MYSQL

от 0,1 до 0,5 или 0,6 - 1,0 или 1.01 - 1.50 .... так далее ...

Следовательно, для каждого диапазона мне нужно написать отдельный запрос выбора? как указано ниже:

SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN 0.1 AND 0.5 
SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN 0.6 AND 1.0 
SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN 1.01 AND 1.5 

Возможно, у него много вариантов, например, над его нефиксированным.

Следовательно, результат я хочу, как показано ниже:

0.1 - 0.5 = 3/9.4 - (its total count/sum of weight) 
0.6 - 1.0 = 2/4.5 
1.01 - 1.5 = 0/0 

... so on and on.... 

Поэтому я учил, чтобы сохранить этот диапазон в многомерном массиве и передавать для выбора запроса в цикл/для каждого, как показано ниже:

$info = array("0" =>array("a1"=>0.1,"a2"=>0.5), 
       "1" => array("b1"=>0.6,"b2"=>1.0), 
       "2" => array("c1"=>1.01,"c2"=>1.5), 
       "3" => array("d1"=>1.51,"d2"=>2.0) 
      ); 


echo"<table>"; 
foreach($info as $row) { 
    echo('<tr>'); 
    foreach($row as $cell) { 
    echo('<td>' . $cell . '</td>'); 

    $sql = "SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN ".$cell." and ??????"; 

    } 
    echo('</tr>'); 
} 
echo "</table>"; 

AS ITS принимает каждое отдельное значение в значении SELECT, когда i echo sql select i see 8 times select query, где, как я должен получить только 4 запроса select в соответствии с диапазонами

, как я могу работать с МЕЖДУ

ЕСЛИ ДРУГОЕ SUGGESTION ПОЛУЧИТЬ НИЖЕ РЕЗУЛЬТАТ ПОЖАЛУЙСТА СООБЩИТЕ МНЕ:

0.1 - 0.5 = 3/9.4 - (its total count/sum of weight) 
0.6 - 1.0 = 2/4.5 
1.01 - 1.5 = 0/0 

... so on and on.... 

ответ

2

Я хотел бы предложить переписывать Еогеасп:

echo"<table>"; 
foreach($info as $row) { 
    echo('<tr>'); 
    echo "<td>SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN ".implode(' and ', $row) . "</td>"; 
    echo('</tr>'); 
} 
echo "</table>"; 

implode совместит элементы массива в строку со словом and между каждым элементом массива.

Например:

array("a1"=>0.1,"a2"=>0.5) 

становится:

0.1 and 0.5 

выше выход:

SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN 0.1 and 0.5 
SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN 0.6 and 1 
SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN 1.01 and 1.5 
SELECT count(*),sum(wght) FROM PROD WHERE wght BETWEEN 1.51 and 2 
+0

привет ричард, спасибо, я попытался, как вы сказали, но результат я получил в качестве «SELECT count (*), sum (wght) FROM PROD WHERE wght BETWEEN» и что до 8 раз - SELECT count (*), sum (wght) FROM PROD WHERE wht BETWEEN – user3209031

+0

Я думаю, что implode не работает, также я должен получить SELECT QUERY ONLY 4, но я получаю 8-кратный запрос запроса в цикле – user3209031

+0

привет, Ричард, вы можете мне помочь – user3209031

Смежные вопросы