[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как результаты цикла загрузить в переменную
dir3
нужно чтобы в коде получился такои стриг :

 "SELECT login, 
SUM(CASE date WHEN '1 March' THEN 1 ELSE 0 END) '1 March',
SUM(CASE date WHEN '2 March' THEN 1 ELSE 0 END) '2 March',
SUM(CASE date WHEN '3 March' THEN 1 ELSE 0 END) '3 March'
FROM
(SELECT membrii.login AS login, CONCAT( DAYOFMONTH( documente.data_close_DOC ) , ' ', MONTHNAME( documente.data_close_DOC ) ) AS date
FROM membrii AS membrii
LEFT JOIN `documente` AS documente ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE id_functia =7
AND documente.IS_STARE_DOC =2
AND documente.data_close_DOC
BETWEEN '2012-02-01 00:00:00'
AND '2012-02-21 23:59:59') AS PIVOT GROUP BY login"
;


где в цикле генерируются такие строки
SUM(CASE date WHEN '1 March' THEN 1 ELSE 0 END) '1 March',


$aryRange = createDateRangeArray($strDateFrom,$iDateFrom);

var_dump($aryRange);



array(3) { [0]=> string(7) "1 March" [1]=> string(7) "2 March" [2]=> string(7) "3 March" }


$countE = count($aryRange);
//переменную для селекта вставлялись строки из цыкла
$i=0;


while ($i < $countE)

{

echo "SUM(CASE date WHEN '$aryRange[$i]' THEN 1 ELSE 0 END) '$aryRange[$i]',"."<br />";

$i++;

};



у кого какие идеи или какоита вариант ?? help please



Спустя 2 минуты, 19 секунд (13.03.2012 - 12:18) ADiel написал(а):
$params[]= " SUM(CASE date WHEN '{$aryRange[$i]}' THEN 1 ELSE 0 END) '{$aryRange[$i]}'";

а после цикла implode(", ", $params)

Спустя 2 минуты, 23 секунды (13.03.2012 - 12:21) ADiel написал(а):
Другими словами
составляем массив из строк вида
SUM(CASE date WHEN '1 March' THEN 1 ELSE 0 END) '1 March'
а потом соединяем их с разделителем ', '
тким образом, замятые будут только между строк. Последней запятой не будет

Спустя 47 минут, 12 секунд (13.03.2012 - 13:08) dir3 написал(а):
спасибо заработало !!!

и придумал 2 вариант
while ($i < $countE)

{

$str = $str."SUM(CASE date WHEN '$aryRange[$i]' THEN 1 ELSE 0 END) '$aryRange[$i],'";

$i++;

};

:) :)

Спустя 1 минута, 7 секунд (13.03.2012 - 13:09) Winston написал(а):
$str = '';
while ($i < $countE)
{
$str .= "SUM(CASE date WHEN '$aryRange[$i]' THEN 1 ELSE 0 END) '$aryRange[$i],'";
$i++;
};

Спустя 55 секунд (13.03.2012 - 13:10) ADiel написал(а):
Так во втором варианте последняя запятая будет.
Можно, конечно, "login" вписать в конец без запятой и норм =)

'$aryRange[$i],'


ошибка. Запятая внутри скобок

Спустя 43 минуты, 38 секунд (13.03.2012 - 13:54) dir3 написал(а):
в конце добавил sum(1) , для того чтобы считал все данные с полей
sql = "SELECT login,".$str."sum('$aryRange[0]') as TOTAL FROM ...
и всё ок smile.gif smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.