2014-03-17 3 views
0

У меня этот успешный запрос , закодированный внутри PHP-кода, причина, по которой я поставил цикл for внутри запроса select, заключается в том, что ncropfarmingreasonid является динамическим в том смысле, что имя и идентификатор будущей причины будут добавлены, поэтому я должен цикла идентификатор внутри базы выберите заявление о том, сколько строк в таблице cropfarmingreasonИзвлечь неизвестный номер. полей в SQL

стол cropfarmingreason tbl_cropfarmingreason

стол tbl_climatechange enter image description here SQL:

   // to get the number of rows in table cropfarmingreason 
    $sql = "SELECT * from tbl_cropfarmingreason order by ncropfarmingreasonid";  
       $query = pg_query($sql); 
       $count_row = pg_num_rows($query); 



$qry_6_12 .= " SELECT count(ncropfarmingreasonid) as counted , " ; 

     for($i=2;$i<=$count_row;$i++) // loop the number of rows and used $i as ncropfarmingreasonid 
       {   
       if(($count_row-$i)==0) 
        { 
        $qry_6_12 .= "SUM(CASE WHEN ncropfarmingreasonid = ".$i." THEN 1 
        ELSE 0 END) a".$i.""; 
        } 
       else 
        { 
        $qry_6_12 .= "SUM(CASE WHEN ncropfarmingreasonid = ".$i." THEN 1 
        ELSE 0 END) a".$i.",";         
        }   
       } 
$qry_6_12 .= " FROM tbl_climatechange as c, tbl_household as h, tbl_barangay as b where h.chholdnumber=c.chholdnumber and b.cbrgycode=h.cbrgycode and b.cbrgyname = 'AMPAYON' "; 
$query_6_12 = pg_query($qry_6_12); 

и это результат запроса:

result

Я хочу знать, если, как я могу извлечь и присвоить значение в переменном каждом поле Whithout зная нет. полей, которые будут возвращены, так как table cropfarmingreason является динамическим. Надеюсь, что кто-то может помочь мне :) спасибо

+0

Ответ "нет", если вы не используете динамический SQL. Тем не менее, вы должны правильно пометить вопрос. Какую базу данных вы используете? –

+0

Я использовал postgresql – ecoli

+0

Я использовал 1.16.0 версию postgresql – ecoli

ответ

0

Я просто использовал ниже запрос, чтобы получить все значения в неизвестном нет. от возврата полей

SQL:

   while ($row_column = pg_fetch_array($query_6_12)){ 
       $col = array(); 
        foreach ($row_column as $key=>$value){ 
        $col[$key]=$value; 
        } 
       } 
1

Ваш PHP может использовать некоторые очистки тоже:

$qry_6_12 .= " SELECT count(ncropfarmingreasonid) as counted" ; -- no comma here 

for($i=2;$i<=$count_row;$i++) // loop the number of rows and used $i as ncropfarmingreasonid 
    { -- comma goes before every added clause so it works with 0 additions too 
     $qry_6_12 .= ", SUM(CASE WHEN ncropfarmingreasonid = ".$i." THEN 1 ELSE 0 END) a".$i.""; 
    } 

Но вы по-прежнему есть очень некрасивый способ запросов к базе данных.

+0

Я уже нашел ответ, спасибо за помощь в любом случае – ecoli

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