У меня есть база данных MySQL, которая выглядит примерно так:
ID Group Name 1 1 John 2 1 Andrea 3 1 Jack 4 2 Mike 5 2 Kurt 6 3 Alice
Мне нужно отсортировать результаты в таблице html, которая выглядит так:
Group Name ----------------------- 1 John Andrea Jack ----------------------- 2 Mike Kurt ----------------------- 3 Alice -----------------------
Я не знаю, должно ли это быть сделано с SQL-запросом (concat_group или что-то подобное) или с PHP, может кто-нибудь, пожалуйста, помогите мне?
Ребята, спасибо за помощь ниже, но мне также нужно выполнить что-то подобное, например:
ID meta_key meta_value name 1 group 1 John 2 group 1 Andrea 3 group 1 Jack 4 group 2 Mike 5 group 2 Kurt 6 group 3 Alice
и мне нужно сортировать / отображать то же, что и в примере выше, примерно так:
group name ----------------------- 1 John Andrea Jack ----------------------- 2 Mike Kurt ----------------------- 3 Alice -----------------------
Теперь моя проблема приобрела новые размеры. Моя база данных выглядит так:
b.ID b.meta_key b.meta_value a.title 1 group 1 Title 1 2 group 1 Title 2 3 group 1 Title 3 4 group 2 Title 4 5 group 2 Title 5 6 group 3 Title 6 7 coef 6 Title 1 8 coef 4 Title 2 9 coef 12 Title 3 9 coef 2 Title 4 9 coef 3 Title 5 9 coef 7 Title 6
(Я работаю с таблицами)
И мне нужно добиться:
group title coef --------------------------------- 1 Title 1 6 Title 2 2 Title 3 12 -------------------------------- 2 Title 4 2 Title 5 3 -------------------------------- 3 Title 6 7 --------------------------------
Возможно ли это?
Это мое решение, althoug не является элегантным вообще
<?php $dbc = new MySQLI(DBHOST,DBUSER,DBPASS,DB); $result = $dbc->query(" SELECT p.Group as 'group', GROUP_CONCAT(name) as names FROM prueba p GROUP BY p.Group "); ?> <table> <tr> <th>Group</th> <th>Name</th> </tr> <?php while($row = $result->fetch_assoc()){ $names = split(",",$row["names"]); ?> <tr> <td><?php echo $row["group"] ?> </td> <td><?php echo $names[0]; array_shift($names) ?></td> </tr> <?php foreach( $names as $name){ ?> <tr> <td></td> <td><?php echo $name ?></td> </tr> <?php } ?> <?php } ?> </table>
Попробуй это:
// SQL stuff $group = null; while($row = mysql_fetch_array($result)) { if($row['group'] != $group) { echo $row['group']; $group = $row['group']; } $row['name']; }