Probleme de SELECT DISTINCT

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

FINIELS
WRInaute discret
WRInaute discret
 
Messages: 80
Inscription: Lun Mai 24, 2004 9:06

Probleme de SELECT DISTINCT

Message le Jeu Juil 10, 2008 11:47

Bonjour,

J'ai besoin d'un petit coup de pouce, pour un problème de Select...

Voila ma table "VILLE":
Code: Tout sélectionner
COMMUNE               CODE POSTAL        DEPARTEMENT
Lyon                         (69000)                RHONE
Montpellier                (34000)                HERAULT
Montpellier                (34070)                HERAULT
Montpellier                (34080)                HERAULT
Montpellier                (34090)                HERAULT
Le Havre                   (76600)                SEINE MARITIME
Le Havre                   (76610)                SEINE MARITIME
Le Havre                   (76620)                SEINE MARITIME
Nîmes                       (30000)                GARD
Nîmes                       (30900)                GARD
Aix en Provence        (13090)                BOUCHES DU RHONE
Aix en Provence        (13100)                BOUCHES DU RHONE

je voudrais n'avoir que les villes sans doublons

Résultat souhaité :
Code: Tout sélectionner
Ville                         Code postal        DEPARTEMENT
Lyon                         (69000)                RHONE
Montpellier                (34000)                HERAULT
Le Havre                   (76600)                SEINE MARITIME
Nîmes                       (30000)                GARD
Aix en Provence        (13090)                BOUCHES DU RHONE

J'ai regardé du côté du DISTINCT mais ça nefonctionne pas :
SELECT DISTINCT commune FROM ville
Ne me permet évidemment pas de récupérer les colonnes "Code postal" / "DEPARTEMENT" dont j'ai besoin.

Je bugue ...Si quelqu'un a une idée...


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Jeu Juil 10, 2008 12:35

Pour éviter les doublons, tu aurais pu faire ta table comme ceci:

COMMUNE CODE POSTAL DEPARTEMENT
Lyon 69000 RHONE
Montpellier 34000;34070..etc HERAULT
Le Havre 76600;76610..etc SEINE MARITIME

Puis quand tu lis une ligne, tu coupes simplement sur le ";" et ça te sort un tableau de codes postaux pour cette ligne

---

Sinon une petite requête orthogonale que je viens de tester et qui fonctionne:

Code: Tout sélectionner
select distinct t1.commune,(select t2.codepostal from ville t2 where t2.commune = t1.commune order by t2.codepostal limit 1) cp,t1.dept from ville t1


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Jeu Juil 10, 2008 14:02

Hello,

dans ton cas le "group by" me semble plus adapté.
Code: Tout sélectionner
select commune, min(codepostal) as codepostal, min(departement) as departement
from ville
group by commune


Mais effectivement une séparation en plusieurs tables (dissocier les codes postaux et les villes), aurait peut être été préférable.

FINIELS
WRInaute discret
WRInaute discret
 
Messages: 80
Inscription: Lun Mai 24, 2004 9:06

Message le Jeu Juil 10, 2008 16:18

Merci pour vos réponses !

ça y est ça marche avec un simple GROUP BY ....

Pour ceux que ça intéresse voila ma requete finale :

SELECT * FROM villes GROUP BY Commune

C'était très con finalement :lol:


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Jeu Juil 10, 2008 17:24

Sauf que là ce n'est pas "valide", et ça ne marche qu'avec certaines versions de MySQL.

Quand on fait un "group by", on doit préciser les champs à lister, et il est interdit d'utiliser des champs qui ne sont pas dans le "group by" justement (il faut obligatoirement utiliser une fonction d'agrégation, d'où mon MIN() ).


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités