0

UNION を使用して行った 2 つの異なるテーブルからデータを返すようにユーザーにデータベースを検索してもらいたいのですが、2 つのテーブルから検索するだけでなく、2 つのテーブルとして表示することもできます..どうすればこれを行うことができますか?

  $result .= "<table border='1'>";
    $result .="<tr><td>Cater</td><td>Part</td><td>Gids</td></tr>";
    while ($row = mysql_fetch_array($sql)){
        $result .= '<tr>';
        $result .= '<td>'.$row['Name'].'</td>';
        $result .= '<td>'.$row['Part'].'</td>';
        $result .= '<td>'.$row['Gid'].'</td>';
        $result .= '</tr>';
    }
    $result .= "</table>"; 
    $result .= "<table border='1'>";
    $result .="<tr><td>Cater</td><td>Dish</td><td>Gids</td></tr>";
    while ($row = mysql_fetch_array($sql)){
        $result .= '<tr>';
        $result .= '<td>'.$row['Name'].'</td>';
        $result .= '<td>'.$row['Dish'].'</td>';
        $result .= '<td>'.$row['Gid'].'</td>';
        $result .= '</tr>';
    }
    $result .= "</table>";
4

2 に答える 2

1

このようにする場合は、最初の結果がどこで終わり、2 番目の結果がどこで始まるかを示す何らかの方法が必要です。簡単な方法は、結果セットに列を追加することです。

Select
    0 as resultset,
    Name,
    Part,
    Gid
From
    Parts
Union All
    1,
    Name,
    Dish,
    Gid
From
    Dishes
Order By
    resultset -- I'm not sure if you need this, or whether you get it for free

次に、2 番目の結果セットに移動した場合は、最初のループから抜け出す必要があります。また、ユニオン内の列名はすべて最初の部分を反映するため、Dish を Part に変更しました。また、共用体のいずれかまたは両方の部分が何も返さない可能性にも対処する必要があります。

$result .= "<table border='1'>";
$result .="<tr><td>Cater</td><td>Part</td><td>Gids</td></tr>";
while ($row = mysql_fetch_assoc($sql) && $row['resultset'] === 0) {
    $result .= '<tr>';
    $result .= '<td>'.$row['Name'].'</td>';
    $result .= '<td>'.$row['Part'].'</td>';
    $result .= '<td>'.$row['Gid'].'</td>';
    $result .= '</tr>';
}
$result .= "</table>"; 
$result .= "<table border='1'>";
$result .="<tr><td>Cater</td><td>Dish</td><td>Gids</td></tr>";
while ($row){
    $result .= '<tr>';
    $result .= '<td>'.$row['Name'].'</td>';
    $result .= '<td>'.$row['Part'].'</td>';
    $result .= '<td>'.$row['Gid'].'</td>';
    $result .= '</tr>';
    $row = mysql_fetch_assoc($sql);
}
$result .= "</table>";
于 2013-10-06T19:04:39.030 に答える
0

おそらく2つのテーブルがありますが、隣同士です。間に目に見えるものを入れてみてください。私は HR を入れましたが、あなたのページにとって視覚的に意味のあるものを入れることができます。BR ot テーブル ヘッダー テキストでも機能します。

$result .= "<table border='1'>";
$result .="<tr><td>Cater</td><td>Part</td><td>Gids</td></tr>";
while ($row = mysql_fetch_array($sql)){
    $result .= '<tr>';
    $result .= '<td>'.$row['Name'].'</td>';
    $result .= '<td>'.$row['Part'].'</td>';
    $result .= '<td>'.$row['Gid'].'</td>';
    $result .= '</tr>';
}
$result .= "</table>"; 

$result .= "<hr />";         <=========

$result .= "<table border='1'>";
$result .="<tr><td>Cater</td><td>Dish</td><td>Gids</td></tr>";
while ($row = mysql_fetch_array($sql)){
    $result .= '<tr>';
    $result .= '<td>'.$row['Name'].'</td>';
    $result .= '<td>'.$row['Dish'].'</td>';
    $result .= '<td>'.$row['Gid'].'</td>';
    $result .= '</tr>';
}
$result .= "</table>";
于 2013-10-06T18:59:46.117 に答える