2013-08-22 2 views
0

У меня возникли проблемы с получением возвращаемых значений из SQL-запроса в правильный формат.Отдельные объединенные строки SQL с запятой

Мне удалось объединить несколько строк в одно значение, однако я не уверен, как заставить его разделять каждое из значений запятой. По сути, мне нужны все идентификаторы продукта, который должен быть получен, например, если в базе данных были значения «5,6,9,1» 1,3,4 и 2,1, я хочу, чтобы это бросило запятая между каждыми подобными -> '5,6,9,1,1,3,4,2,1' вместо этого делает что-то более похожее -> '5,6,911,3,42,1', что и есть делает в данный момент.

Код, который я использую, приведен ниже. Любая помощь будет принята с благодарностью.

Спасибо!

$hist = "SELECT ORDITEMS FROM cust_orderc WHERE ORDDATE > 
to_date('".$olddate."','dd/mm/yyyy')"; 


$histitem = OCIParse($db, $hist); 
OCIExecute($histitem); 

while($row = oci_fetch_array($histitem)){ 
    $pastitem .= $row['ORDITEMS']; 
} 

echo "$pastitem"; 

ответ

0

Вы можете сделать то же самое в oracle используя LISTAGG

$hist = "SELECT LISTAGG(ORDITEMS) as ORDITEMS FROM cust_orderc WHERE ORDDATE > to_date('".$olddate."','dd/mm/yyyy')"; 

Редактировать ИЛИ PHP путь

$pastitem = ''; 
while($row = oci_fetch_array($histitem)){ 
    $pastitem .= $row['ORDITEMS'] . ','; 
} 
$pastitem = trim($pastitem, ","); 
echo $pastitem; 
+1

Для базы данных Oracle, эквивалентная функция 'wm_concat()' –

+0

@ MarkBaker Спасибо, я никогда не замечал этот запрос, связанный с базой данных оракула. :) –

+0

wm_concat() никогда не был (IIRC) официально документирован или поддерживается; Я считаю, что Oracle 11g имеет функцию 'LISTAGG()' для этой же цели. –

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