2016-11-17 4 views
-1

позволяет сказать, что у меня есть 10 строк, из которых 5 имеют одинаковый идентификатор, а другой 5 имеют другой идентификатор.группы строк mysql и данные для печати с помощью PHP

id ---------name 

55 -------- name1 
55 -------- name2 
55 -------- name3 
66 -------- name6 
66 -------- name7 
55 -------- name4 
66 -------- name8 
66 -------- name9 
66 -------- name10 
55 -------- name5 

Я хочу выбрать эти 10 строк и группу по тому же идентификатору. поэтому у меня будет 2 группы и я хочу распечатать все группы 1 затем распечатать все данные группы 2.

результат будет таким:

  • group1 (name1, name2, name3, NAME4, name5)
  • group2 (name6, name7, name8, name9, name10)

    , как это возможно?

заранее спасибо ...

+1

Прежде всего: если * несколько наборов данных * имеют * тот же идентификатор *, что-то не так с вашей базой данных. второе: что вы ** пробовали сами ** до сих пор? в-третьих: вы проверили [руководство MySQL] (https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html)? –

+0

Я бы начал с изучения [руководства MySQL - GROUP_CONCAT()] (http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat) – RiggsFolly

+1

@FranzGleichmann Смелое утверждение о скудной информации – Strawberry

ответ

-1

PDO имеет много замечательных режимов для начнут извлекать вас. Мне удалось собрать их все в этой статье, с которой вы можете узнать, что PDO already group the data сразу запроса:

$sql = "select id, name from table"; 
$data = $pdo->query($sql)->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_COLUMN); 

теперь у вас есть массив, который ключами являются идентификаторы и значения массивов с именами. Вот простой пример, хотя вы можете отформатировать вывод, как вы хотите

foreach ($data as $id => $names) { 
    echo "$id (".implode(",", $names).")"; 
} 

это решение способ более гибкий, чем SQL на основе одного. Скажите, хотите ли вы поместить каждое имя в отдельную ячейку таблицы.

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