2012-12-05 26 views
0

我想將兩個查詢拼在一起。以下是我使用的代碼。然而,表格正在拆分數據。我該如何補救?或者有什麼更好的解決方案?加入兩個mysql_fetch_arrays

while($row = mysql_fetch_array($result)) 
{ 
    echo "<tr id='centered' >"; 
    echo "<td class='leftalign'>" . $row['Quarter_Name'] . "</td>"; 
    echo "<td>" . $row['Quarterly_yield'] . "</td>"; 
    echo "<td>" . $row['Quarterly_yield'] . "</td>"; 
    echo "<td>" . $row['Quarterly_yield'] . "</td>"; 
} 

while($row = mysql_fetch_array($result8)) 
{ 
    echo "<td>" . $row['Quarterly_yield'] . "</td>"; 
} 

2.查詢如下:它們幾乎是一樣的

SELECT LEFT(A.F_ANOTRIMESTRE, 4) Year, 
     RIGHT(A.F_ANOTRIMESTRE, 2) Quarter, 
     IF(RIGHT(A.F_ANOTRIMESTRE, 2)=03,'Enero a Marzo', 
      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=06,'Abril a Junio', 
       IF(RIGHT(A.F_ANOTRIMESTRE, 2)=09,'Julio a Septiembre', 
        IF(RIGHT(A.F_ANOTRIMESTRE, 2)=12,'Octubre a Diciembre', '') 
       ) 
      ) 
     ) Quarter_Name, 
     ROUND(A.POR_RENTABILIDAD, 2) Quarterly_yield 
FROM dr_rent_carteras_trimestres A 
WHERE A.ID_CARTERA = $ID_CARTERA 
AND  A.IND_RENTABILIDAD = 1 
AND  LEFT(A.F_ANOTRIMESTRE, 4) = (
      SELECT MAX(left(F_ANOTRIMESTRE, 4)) - 0 
      FROM dr_rent_carteras_trimestres 
      WHERE ID_CARTERA = $ID_CARTERA 
     ) 

這裏是第二屆一個:

SELECT LEFT(A.F_ANOTRIMESTRE, 4) Year, 
     RIGHT(A.F_ANOTRIMESTRE, 2) Quarter, 
     IF(RIGHT(A.F_ANOTRIMESTRE, 2)=03,'Enero a Marzo', 
      IF(RIGHT(A.F_ANOTRIMESTRE, 2)=06,'Abril a Junio', 
       IF(RIGHT(A.F_ANOTRIMESTRE, 2)=09,'Julio a Septiembre', 
        IF(RIGHT(A.F_ANOTRIMESTRE, 2)=12,'Octubre a Diciembre', '') 
       ) 
      ) 
     ) Quarter_Name, 
     ROUND(A.POR_RENTABILIDAD, 2) Quarterly_yield 
FROM dr_rent_carteras_trimestres A 
WHERE A.ID_CARTERA = $ID_CARTERA 
AND  A.IND_RENTABILIDAD = 1 
AND  LEFT(A.F_ANOTRIMESTRE, 4) = ( 
      SELECT MAX(left(F_ANOTRIMESTRE, 4)) - 1 
      FROM dr_rent_carteras_trimestres 
      WHERE ID_CARTERA = $ID_CARTERA 
     ) 
+0

看打印結果'array_merge()'的內部手冊。 – piotrekkr

+2

2個查詢是什麼?他們也許可以合併 – 2012-12-05 23:06:43

+0

我將查詢添加到我的文章 –

回答

1

在你上面的代碼,你在第一次打開tr標籤循環但從不關閉它。同樣在第一個循環中,您將打印出Quarterly_yield三次,但還是會爲該結果計算一列。實際上你正在打印出同樣的東西。

幾個選項 - 在其自己的行每次查詢打印每個結果:

// Loop through the results and print 
while($row = mysql_fetch_array($result)) 
{ 
    echo "<tr id='centered' >\m"; 
    echo "<td class='leftalign'>{$row['Quarter_Name']}</td>\n"; 
    echo "<td>{$row['Quarterly_yield']}</td>\n"; 
    echo "</tr>\n"; 
} 

while($row = mysql_fetch_array($result8)) 
{ 
    echo "<tr id='centered' >\m"; 
    echo "<td class='leftalign'>{$row['Quarter_Name']}</td>\n"; 
    echo "<td>{$row['Quarterly_yield']}</td>\n"; 
    echo "</tr>\n"; 
} 

或者你可以創建你有結果的數組,然後打印陣列。這有效地將結果結合在一起。因此,讓我們假設陣列的結構爲這樣:

$results[Year-Quarter] = array(Year, Quarter, QuarterName, Result1, Result2) 

那麼你可以構建陣列如下:

$results = array(); 

while($row = mysql_fetch_array($result)) 
{ 
    $key = $row['Year'] . '-' . $row['Quarter']; 
    $results[$key] = array(
     'Year'   => $row['Year'], 
     'Quarter'   => $row['Quarter'], 
     'Quarter_Name' => $row['Quarter_Name'], 
     'Quarter_yield_1' => $row['Quarter_yield'], 
     'Quarter_yield_2' => 0, 
    ); 
} 

while($row = mysql_fetch_array($result8)) 
{ 
    $key = $row['Year'] . '-' . $row['Quarter']; 

    // Check if we have this key 
    if (isset($results[$key])) 
    { 
     $results[$key]['Quarter_yield_2'] = $row['Quarter_yield']; 
    } 
    else 
    { 
     $results[$key] = array(
      'Year'   => $row['Year'], 
      'Quarter'   => $row['Quarter'], 
      'Quarter_Name' => $row['Quarter_Name'], 
      'Quarter_yield_1' => 0, 
      'Quarter_yield_2' => $row['Quarter_yield'], 
     ); 
} 

,然後從$results陣列

foreach ($results as $item) 
{ 
    echo "<tr id='centered' >\m"; 
    echo "<td class='leftalign'>{$item['Quarter_Name']}</td>\n"; 
    echo "<td>{$item['Quarter_yield_1']}</td>\n"; 
    echo "<td>{$item['Quarter_yield_2']}</td>\n"; 
    echo "</tr>\n"; 
}