2017-02-19 4 views
2

Здравствуйте Я знаю, как использовать основные SQL около выбрать, присоединиться, принеси
, но не имеют понятия, как это выборки, как на мой сайт (см скриншот)SQL PHP: как выбрать и выбрать так?

enter image description here

Из скриншота имеет column 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 | КОМНАТА А

floor 2

202 | КОМНАТА B

floor 3

301 | КОМНАТА E

floor 3

302 | НОМЕР F

Это не я хочу.

+0

Не ваш 'si_room' таблицы нужно столбец с названием' room_no' который будет содержать номера трехзначные номер? (201, 202, 301, 302) – mickmackusa

+0

Да, извините – doflamingo

+0

Это не дубликат. Я спрашиваю про ненормальный выбор – doflamingo

ответ

2

К счастью, вы используете PDO, у которого уже есть эта функция для вас, которая может делать именно то, что вы хотите - группировать данные на основе некоторого столбца.

PDO can group results into the nested arrays, основанный на первом выбранном поле. Так что вам нужно перечислить список своего идентификатор в качестве первого поля в списке полого, а затем получить ваши строки, используя fetchAll() с вышеупомянутым режимом выборки:

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

и теперь вы получите аккуратный вложенный массив, где ваши строки сгруппированы по список id!

Для того, чтобы она выдавала аккуратно вы должны использовать два вложенных операторов Foreach

foreach ($building as $floor_no => $rooms) 
{ 
    echo $floor_no."\n"; 
    foreach ($rooms as $row) 
    { 
     echo $row['room_name']."\n"; 
    } 
} 
Смежные вопросы