2016-04-06 2 views
0

Итак, как имя уже говорит или не говорит, потому что я действительно не знал, как назвать свою проблему, я пытаюсь добиться следующего.Получите столбец MySql-Query как заголовок только один раз в PHP (даже если есть несколько результатов)

Я получил MySQL-запрос, который доставляет мне результат:

id | name  | position 
1 Kevin  CEO 
2 Sarah  Developer 
3 Daniel  Developer 
4 Michael Marketing 
5 Tom  Marketing 

Теперь мне нужно, чтобы показать информацию в Frontend вроде этого:

**CEO** 
Kevin 

**Developer** 
Sarah 
Daniel 

**Marketing** 
Michael 
Tom 

Что означает, что нужно положение -column только один раз в качестве заголовка, и под ним я хочу показать соответствующих лиц для этой позиции. Это не вариант для меня сделать отдельный запрос для каждой позиции, потому что в моей таблице у меня есть 75 из них.

Так как же я могу достичь этого, с одной стороны, получить результат моего запроса только один раз в качестве заголовка, а с другой стороны получить name каждого человека для этой позиции, указанной под ним.

Надеюсь, я смог объяснить свою проблему достаточно хорошо.

+0

Вы хотите запрос возвращать результат, как вы предоставили? Если да, то это плохой подход, потому что это должно быть сделано на прикладном уровне. – lad2025

ответ

1

Вы можете пропустить один раз через результат и сделать позицию ключом в новом массиве.

$newArray = []; 

foreach($myQueryResult as $res){ 
    $newArray[$res['position']][] = $res['name']; 
} 

В результате этого выхода:

Array (
    "CEO" => [ "kevin" ], 
    "Developer" => [ "Sarah", "Daniel" ], 
    "Marketing" => [ "Michael", "Tom" ] 
) 
+0

Я пробовал это, и это делает работу! Большое вам спасибо. Я приму свой ответ, как только смогу. –

0

Используйте этот запрос:

SELECT `position`, GROUP_CONCAT(name SEPARATOR '<br>') as name FROM `YourTableName` GROUP BY `position`