Грамотно вывести данные из mysql в аккордеон

Подскажите, как грамотно выводить данные из mysql в аккордеон без использования запроса в цикле? На данный момент имею 2 аккордеона. Один выводит дилеров для России. Другой выводит дилеров для заграницы. Вот код первого аккордеона

<?php
$sql = 'SELECT (SELECT COUNT(*) FROM `dilery` WHERE dilery.city_dil = city.id_city AND dilery.`status` != 1) as `count`, city.name_city, city.id_city
FROM dilery
INNER JOIN city ON dilery.city_dil = city.id_city
WHERE city.region != "1" AND dilery.`status` != 1
GROUP BY name_city
ORDER BY name_city';
                                $row_dealers = mysqli_query($link,$sql); 
                                while ($row = mysqli_fetch_array($row_dealers)) { ?>
                                    <div class="card">
                                        <div class="card-header pt-0 pb-0" id="headingOne">
                                            <div class="pt-1 float-right">
                                                <span class="badge badge-primary"> <?=$row['count']?></span>
                                            </div>
                                            <h5 class="card-title my-2">
                                                <a href="#" data-toggle="collapse" data-target="#collapse-<?=$row['id_city']?>" aria-expanded="true" aria-controls="collapseO-<?=$row['id_city']?>"><?=$row['name_city']?>
                                                </a>
                                            </h5>
                                        </div>
                                        <div id="collapse-<?=$row['id_city']?>" class="collapse" aria-labelledby="headingOne" data-parent="#rusdealer">
                                            <div class="card-body">
                                                <div class="row">
                                                    <?php
                                                    $sql = 'SELECT dilery.name_dil, dilery.phone_dil, dilery.email_dil, dilery.site_dil
                                                            FROM dilery
                                                            INNER JOIN city ON dilery.city_dil = city.id_city
                                                            WHERE dilery.city_dil = '.$row['id_city'].' AND dilery.`status` != 1
                                                            ORDER BY name_city';
                                                    // echo $sql;
                                                    $row_dealers_item = mysqli_query($link,$sql); 
                                                    while ($row2 = mysqli_fetch_array($row_dealers_item)) {

Получается что первый запрос выводит названия городов и количество внутри дилеров, а второй запрос в цикле, собственно выводит сами карточки дилеров. И этот запрос в цикле очень сильно тормозит загрузку страницы. Тут же на этой же странице точно, такой же вывод второго аккордеона с минимальными изменениями запроса для вывода дилеров за рубежом. Это всё плодит очень много запросов и выполняется медленно. Подскажите, как грамотно выводить такого рода информацию

Добавил такой код

$sql = 'SELECT (SELECT COUNT(*) FROM `dilery` WHERE dilery.city_dil = city.id_city AND dilery.`status` != 1) as `count`, city.name_city, city.id_city
        FROM dilery
        INNER JOIN city ON dilery.city_dil = city.id_city
        WHERE city.region != "1" AND dilery.`status` != 1
        GROUP BY name_city
        ORDER BY name_city';
$row_dealers = mysqli_query($link,$sql); 
while ($city = mysqli_fetch_assoc($row_dealers)) {
    $arr[] = $city;
}
$arr_city = array_column($arr, 'id_city');


$sql = 'SELECT dilery.city_dil, dilery.name_dil, dilery.phone_dil, dilery.email_dil, dilery.site_dil, city.name_city
FROM dilery
INNER JOIN city ON dilery.city_dil = city.id_city
WHERE dilery.city_dil IN ('. implode(',', $arr_city) .') AND dilery.`status` != 1
ORDER BY name_city';
$row_dealers_item = mysqli_query($link,$sql);
while ($row_dealer = mysqli_fetch_assoc($row_dealers_item)) {
    $arr_dealer[] = array("dealer_city_id"=>$row_dealer['city_dil'],"dealer_name"=>$row_dealer['name_dil'],"dealer_phone"=>$row_dealer['phone_dil'],"dealer_email"=>$row_dealer['email_dil'],"dealer_site"=>$row_dealer['site_dil']);
}

Ответы (0 шт):