Как отсортировать результат объединения SQL по одному столбцу в PHP

0

У меня есть база данных со списком местоположений, например:

C_ID   |   Name 

1      |   Italy
2      |   Germany
3      |   France
4      |   Spain

и в отдельной таблице список людей из этих стран,

P_ID  |  Name   |  C_ID

1     | John    | 1
2     | Mark    | 1
3     | Paul    | 2
4     | Pierre  | 3
5     | Alan    | 2

Я захватил эти данные в SQL-запросе с помощью соединения...

SELECT locations.name as locaname, people.name as peoplename
FROM locations
INNER JOIN people
ON locations.c_id=people.c_id
ORDER BY locations.name";

Что дает мне:

Italy John
Italy Mark
Germany Paul
Germany Alan
France Pierre

Однако то, чего я пытаюсь достичь, - это неупорядоченный список, повторяемый PHP. С именами людей сгруппированы по названию страны. В отличие от повторения названия страны. Я пробовал использовать массивы, но мои знания PHP/MySQL позволяют мне...

Теги:
list
grouping
unordered

1 ответ

1
Лучший ответ

Try:

$sql = <<<END
SELECT locations.name as locaname, people.name as peoplename
FROM locations
INNER JOIN people
ON locations.c_id=people.c_id
ORDER BY locations.name"
END;
$query = mysql_query($query) or die($sql . ' - ' . mysql_error());
$result = array();
while ($row = mysql_fetch_array($query)) {
  $result[$row[0]][] = $row[1];
}
print_r($result);

$row[0] - страна, $row[1] - имя человека. Здесь используется функция в цикле while. Это довольно много. Он в основном добавляет запись в массив результатов с именем страны и добавляет имя человека в массив, который он хранит там.

Изменить: Заказать в виде списка:

echo '<ul>';
foreach ($result as $country => $persons) {
  echo "<li>$country\n<ul>\n";
  foreach ($persons as $person) {
    echo "<li>$person</li>\n";
  }
  echo "</ul></li>\n";
}
echo '</ul>';
  • 0
    да, это группы присоединиться именно так, как мне нужно, большое спасибо. Как можно заказать это как список сейчас? т. е. стиль <ul> <li> Извините за то, что я такой нуб в этом ...
  • 0
    Добавленный код предоставляет только одного ребенка для каждого родителя, а не правильное количество детей.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню