2014-09-20 5 views
0

Я хочу объединить аэропорты, которые используют одну и ту же колонку «Город». Прямо сейчас все они перечислены бок о бок, что хорошо, но я хочу добавить дополнительный тег опции для каждого города, в котором есть два аэропорта.Группируйте аналогичные записи в запросе в MySQL

Например прямо сейчас мой код показывает:

Нью-Йорк - JFK

Нью-Йорк - La Guardia

Лос-Анджелес - LAX

Но я хочу это должно показать:

Нью-Йорк - Все

Нью-Йорк - JFK

Нью-Йорк - La Guardia

Лос-Анджелес - LAX

Любая помощь приветствуется. Заранее спасибо

$getairportsfrom=mysqli_query($db,"SELECT * FROM details WHERE type='Airport' ORDER BY city"); 

        while($rowfrom = mysqli_fetch_array($getairportsfrom)) { 
       echo "<option value='".$rowfrom['title']."'>" . $rowfrom['city'] . " - " . $rowfrom['title'] . "</option>"; 
        } 

ответ

2

Если это ваш запрос:

SELECT city, title 
FROM details 
WHERE type = 'Airport' 
ORDER BY city; 

Вы можете получить то, что вы хотите с этим запросом:

select city, title 
from ((select city, 'All' as title, 1 as ordering 
     from details 
     group by city 
     having count(*) > 1 
    ) union all 
     (select city, title, 2 as ordering 
     from details 
    ) 
    ) d 
order by city, ordering; 

SQL не очень предназначен для данного типа манипуляции для презентации. Однако это можно сделать.

+0

Я закончил с этим, используя аналогичный код, используя GROUP BY, прежде чем я увижу ваш ответ. Ваш код намного чище, хотя я мог бы его реализовать. Огромное спасибо! –

Смежные вопросы