كيف يمكنني فرز نتيجة SQL الانضمام إلى عمود واحد في PHP

StackOverflow https://stackoverflow.com/questions/1812950

سؤال

لدي قاعدة بيانات تحتوي على قائمة من المواقع على سبيل المثال:

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 هو السماح لي...

هل كانت مفيدة؟

المحلول

محاولة:

$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>';
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top