Я новичок в PHP и побывал на нескольких сайтах для этого, но, похоже, не понимаю их полностью.Группировка городов, штатов и стран в MYSQL PHP
У меня есть этот запрос:
$result = mysql_query
("SELECT Country, State, City
FROM Address_Base
ORDER BY Country, State, City")
or die(mysql_error());
Это дает следующую выборку данных:
Canada - State 1 - City Apple
Canada - State 2 - City Grapes
Canada - State 1 - City Apple
Canada - State 2 - City Coffee
USA - State 1 - City Zebra
USA - State 2 - City Cat
USA - State 2 - City Lion
USA - State 3 - City Bird
USA - State 1 - City Zebra
Моя цель состоит в группе города под соответствующим государством и сосчитать город, группа государства под соответствующая страна & группа аналогичных стран и произвести что-то подобное
Canada -
{
State 1 - City Apple (2)
State 2 - City Coffee (1), City Grapes (1)
}
USA -
{
State 1 - City Zebra (2)
State 2 - City Cat (1), City Lion (1)
State 3 - City Bird (1)
}
С другого сайта, я получил это:
$combinedResults = array();
while ($rec=mysql_fetch_assoc($result))
{
$combinedResults[$rec['Country']][] = array
(
'S' => $rec['State'],
'C' => $rec['City']
);
}
foreach(array_keys($combinedResults) as $Country)
{
echo '<div class="country">'.$Country.'</div>';
foreach($combinedResults[$Country] as $Set)
{
echo $Set['S'].'<br/>'.$Set['C'].'<br/><br/>';
}
}
Это только группы, подобные стран, а не государство и город. Я думаю, что вышеприведенный фрагмент кода пытается предварительно обработать данные в каком-то многомерном массиве и отобразить результаты для цикла. Я не могу понять это ясно.
Я был бы очень благодарен, если бы кто-нибудь мог объяснить это мне и как я могу дальше группировать штаты и города соответственно, как указано выше?
@Matt ... Я попробовал группу ... поскольку она использовалась с использованием агрегатных функций ... не помогает в достижении целевого отображения. Более того, два города могут иметь одно и то же имя, но разные штаты в США ..., я попробовал Group By zip-codes .... но я обнаружил, что почтовый индекс США может быть одинаковым в Мексике. Это создает проблему для меня. Поэтому я сбросил этот маршрут. – Tede
GROUP BY не должно вызывать проблемы с повторяющимися значениями, если вы получаете предложения в правильном порядке и включаете их все. В приведенном выше примере я сначала помещаю страну, так что вы получите вещи, сгруппированные этим, а затем по штату внутри стран (по одной строке для каждого состояния, даже если имя такое же, если они находятся в разных странах). Я немного смущен тем, что вы в конечном счете считаете. Что означают цифры в скобках после названий городов? –
номер в круглых скобках после названий городов дает мне общее количество того же города, указанного в государстве ... например: - в приведенном выше образце город «яблоко» появляется дважды под одним и тем же городом, поэтому - (2). Это то, что я считаю. – Tede