كيف يمكنني فرز نتيجة SQL الانضمام إلى عمود واحد في PHP
سؤال
لدي قاعدة بيانات تحتوي على قائمة من المواقع على سبيل المثال:
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>';
لا تنتمي إلى StackOverflow