2014-09-20 3 views
0

Je veux regrouper les aéroports qui partagent la même colonne «ville». À l'heure actuelle, ils sont tous listés côte à côte, ce qui est bien, mais je veux ajouter un tag d'option supplémentaire pour chaque ville qui a deux aéroports.Regrouper des entrées similaires dans la requête dans MySQL

Par exemple en ce moment mon code montre:

New York - JFK

New York - La Guardia

Los Angeles - LAX

Mais je veux pour montrer:

New York - Tous

New York - JFK

New York - La Guardia

Los Angeles - LAX

Toute aide est appréciée. Merci à l'avance

$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>"; 
        } 

Répondre

2

Si ceci est votre requête:

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

Vous pouvez obtenir ce que vous voulez avec cette requête:

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 n'est pas vraiment conçu pour ce type de manipulations pour la présentation. Cependant, il est possible de le faire.

+0

J'ai fini par le faire moi-même, avec un code similaire en utilisant GROUP BY avant de voir votre réponse. Votre code est beaucoup plus propre et je pourrais l'implémenter à la place. Merci beaucoup! –

Questions connexes