2011-01-21 3 views
0

Я "ве таблицы, как этотПоказать в таблице

global_id | auto_trans | add_drivers |child_seat | booster_seat | day 
- - - - - - - - - - - - - - - -- -- - - - - - - - -- - - - - - - - - 
    18   2   1   5    2   2 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    19   5   8   7    6   1 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    20   2   4   7    9   3 
- - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - 

Я хочу, чтобы отобразить значения в таблице ниже в формате

___________|__1_|_2_ |_3 | 
    |   | | | | 
auto_trans | 5 | 2 | 2 | 
- - - - - - - - - - - - - 
add_drivers | 8 | 1 | 4 | 
-- - - - - - - - - - -- 
child_seat | 7 | 5 | 7 | 
- - - - - - - - - - - - - 
booster_seat| 6 | 2 | 9 | 
- - - - - - - - - - - - - - 

Как написать цикл для этого?

+0

Пожалуйста, попробуйте форматирование пример. Я сейчас читал это дважды, и я до сих пор не понимаю, на что вы нацеливаетесь. – polarblau

+0

Посмотрите на таблицу «PIVOT», чтобы агрегировать результаты? Хотя я не уверен, где имена полей «1», «2» и «3» появляются в вашем формате отображения. – Tony

+0

Сколько строк у вас есть только три или может иметь больше или меньше 3? –

ответ

1

easy Ответ? Создайте цикл в цикле, который будет хранить значение имени столбца по имени столбца, а не какую строку он находится в базе данных (см. Ниже пример, если y ou're в рассоле, и это необходимо решить как можно скорее). правильный ответ, однако, что вы, вероятно, need to normalise your database немного дальше. Несмотря на то, что значения, как представляется, связаны друг с другом, ваш запрос на их печать таким образом говорит мне, что ваша база данных может быть немного отключена.

<?php 
/** Just assuming. */ 
$results = $db->query( 
    'SELECT auto_trans, add_drivers, child_seat, booster_seat ORDER BY auto_trans' 
)->fetchAll(); 

$categorised = array(); 
foreach($results as $result) { 
    foreach($result as $columname => $value) { 
     if(!array_key_exists($columnname, $categorised)) { 
      $categories[$columnname] = array(); 
     } 
     $categories[$columnname][] = $value; 
    } 
} 

echo "<table>"; 
echo "<tr>"; 
foreach($categories as $category => $values) { 
    echo "<tr>"; 
    echo "<th>" . $category . "</th>"; 
    foreach($values as $value) { 
     echo "<td>" . $value . "</td>"; 
    } 
    echo "</tr>"; 
} 
echo "</table>"; 
0

Ответ - это точка поворота или кросс-таблицы, но фактическое решение зависит от используемой базы данных.

MS SqlServer 2005 имеет команду PIVOT для этого, но многие другие этого не делают.

Как вы используете Php я взять на себя MySQL оч ProstgreSQL

Для проверки PostgreSQL это: http://www.postgresql.org/docs/current/static/tablefunc.html

Для MySQL это кажется более сложным, проверить это: http://mysql.bigresource.com/crosstab-query-Pivot-table-1mjeYKlS.html#WAGYCZsH

Смежные вопросы