SELECT DISTINCT country.country_ru AS country__country_ru,
city.city_ru AS city__city_ru
FROM tour
LEFT JOIN city
ON tour.city = city.id
LEFT JOIN country
ON city.country = country.id
так вот как выводит на php чтобы один раз повтарялся страна и города в были группы страны
<select>
<optgroup label="Азербайджан">
<option>Баку</option>
<option>Шуша</option>
</optgroup>
<optgroup label="Турция">
<option>Анталья</option>
</optgroup>
</select>
$arr = [
[
'country__country_ru' => 'Азербайджан',
'city__city_ru' => 'Баку',
],
[
'country__country_ru' => 'Турция',
'city__city_ru' => 'Анталья',
],
[
'country__country_ru' => 'Азербайджан',
'city__city_ru' => 'Шуша',
],
];
$prep = [];
foreach ($arr as $row)
{
if (! isset($prep[ $row['country__country_ru'] ])) {
$prep[ $row['country__country_ru'] ] = [];
}
$prep[ $row['country__country_ru'] ] []= $row['city__city_ru'];
}
$html = "<select>\n";
foreach ($prep as $country => $cities)
{
$html .= " <optgroup label=\"$country\">\n";
foreach ($cities as $city)
{
$html .= " <option>$city</option>\n";
}
$html .= " </optgroup>\n";
}
$html .= "</select>\n";
echo $html;
Сборка персонального компьютера от Artline: умный выбор для современных пользователей