2017-02-19 4 views
2

こんにちは、私はそれを持っているスクリーンショットからSQL PHP:このようにSELECTして取得するには?

enter image description here

(スクリーンショットを参照)、選択についての基本的なSQLを使用して参加し、
を取得する方法を知っているんだけど、私のウェブサイトに次のようにフェッチする方法のアイデアを持っていません列room_numberも。

<table> 
<tr> 
    <td>room no.</td> 
    <td>room name</td> 
</tr> 

<?php 
$sql = SELECT * FROM si_room; 
$query = $db->query($sql); 

while($row = $query->fetch(PDO::FETCH_ASSOC)) 
{ ?> 
    <tr> 
     <td><?php echo ????? ; ?></td> 
     <td><?php echo ?????; ?></td> 
    </tr> 
<?php } ?> 
</table> 

UPDATE:

私はこのコード

<?php 
    $sql = "SELECT * FROM si_room"; 
    $querymain = $db->query($sql)->fetchAll(PDO::FETCH_GROUP); 
    ?> 
    <table> 
    <tr> 
     <td>room no.</td> 
     <td>room_name</td> 
    </tr> 
    <?php 
    foreach ($querymain as $list_id => $list_data) 
    { 
     echo "<tr>"; 
     echo "<td> floor ".$list_data[0]['room_floor']."<br>"; 
     foreach ($list_data as $row) 
     {          
      echo $row['room_no']."</td>"; 
      echo "<td>".$row['room_name']."</td>"; 
     } 
    } ?> 
    </tr> 
    </table> 

と試みるが、結果は

階2

201で|部屋A

床2

202 |部屋B

床3

301 |部屋E

床3

302 | ROOM F

これは私が欲しいものではありません。

+0

ネストされた2つのforeach演算子を使用する必要があなたの 'si_room'テーブルには3桁の部屋番号を保持します' room_no'という列を必要としないようにするに

? (201,202,301,302) – mickmackusa

+0

はいそれは申し訳ありません – doflamingo

+0

これは重複していません。私は異常な選択について尋ねます – doflamingo

答えて

2

幸いなことに、すでにこの機能を備えているPDOを使用しています。これは、あなたが望むものを正確に行うことができます。

PDO can group results into the nested arrays、選択された最初のフィールドに基づきます。

$sql = "select room_floor, room_name, room_no from si_room"; 
$building = $dbh->query($sql)->fetchAll(PDO::FETCH_GROUP); 

、今、あなたの行が別にグループ化されてきちんとネストされた配列を取得:だから、あなたは、フィールドリストの最初のフィールドとしてリストIDを一覧表示し、次にフェッチ前述のモードでfetchAll()を使用して行を取得する必要がありますリストのID!それ出力きちんとあなたが

foreach ($building as $floor_no => $rooms) 
{ 
    echo $floor_no."\n"; 
    foreach ($rooms as $row) 
    { 
     echo $row['room_name']."\n"; 
    } 
} 
関連する問題