2012-12-05 21 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"; 
}