IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

SQL DISTINCT ? Doublons ?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 3
    Par défaut SQL DISTINCT ? Doublons ?
    Bonjour à tous,

    Je vous écris car j'ai un petit souci (j'utilise phpmyadmin /mariadb).

    Es ce que quelqu'un saurait comment ne pas prendre en compte une valeur si celle-ci est un doublon.

    Je m'explique, si je cherche une donnée X et que celle ci est présente deux fois, est il possible de ne prendre aucune des 2 données dans une requete SQL ?

    exemple : TABLE LocalisationsMassifs

    NomMassif | Idmassif | LOCALISATION
    Mont Owen | 1 | Sud
    Mont Owen | 2 | Ouest
    El capitain | 4 | Sud

    En effet dans ce tableau, on voit que mont owen est en double mais pas la localisation.
    je recherche le nom des massifs ne se situant pas à l'Ouest.
    OR, ici mont owen ce situe au sud ET a l'OUEST, même avec un distinct je n'ai pas réussi à ne prendre en compte que le mont Owen se situant au sud, je ne sais pas si vous pourrez m’éclairer..et surtout si j'ai été claire

    j'avais fais cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  DISTINC nomMassif
    FROM LocalisationsMassifs
    WHERE Localisation not like "Est%" 
    AND infoLocalisation not like "Ouest"
    J'ai rajouté un DISTINCT, je trouves toujours le mauvais résultat.


    merci beaucoup d'avance.
    bonne journée à tous

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 528
    Par défaut
    Bonjour,
    Avec ce modèle de table, il faut chercher les lignes pour lesquelles la localisation n'est pas Ouest, ou pour lesquelles il n'en existe pas d'autre avec le même mont et une localisation à l'ouest (et un id différent).
    Un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select t1.*
    from TableLocalisationMassif as t1
    left outer TableLocalisationMassif as t2 on t1.NomMAssif = t2.NomMAssif and t1.id <> t2.id and t2.localisation = 'OUEST'
    where t1.localisation <> 'OUEST' and t2.id is null
    Tatayo.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 760
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    D'accord avec Tatayo et quelques remarques complémentaires par rapport à cet extrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE Localisation not like "Est%" 
    AND infoLocalisation not like "Ouest"
    • les valeurs entre double quotes sont à utiliser pour des noms de colonnes, d'autres SGBD que mariaDB n'accepteraient pas cette syntaxe.
    • vous filtrez une fois sur la colonne LOCALISATION, une autre fois sur la colonne INFOLOCALISATION, est-ce normal ?
    • l'opérateur like devrait être utilisé avec un wildcard "%" ou "_" mais dans votre cas, il est préférable d'utiliser l'opérateur "="


    EDIT : et il manque le "T" dans DISTINCT

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2019
    Messages : 3
    Par défaut
    Merci beaucoup pour vos reponses !

    Tatayo, je vais essayer, c'était un truc comme ça que je voulais faire mais je n'y arrivais pas ^^'

    Escartefigue, en effet j'ai fais quelques erreur de frappes..
    en tout cas merci pour les infos je retiens !

    bonne journée à vous

  5. #5
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour

    Une alternative, qui évite la sous requête (pas forcément plus performante toutefois, à comparer)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT  nomMassif
    FROM LocalisationsMassifs
    GROUP BY nomMassif
    HAVING MAX(CASE WHEN localisation  = 'Ouest' THEN 1 ELSE 0 END) = 0

Discussions similaires

  1. débutant SQL : DISTINCT
    Par free07 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 13/11/2009, 09h44
  2. [SQL] Eviter doublons dans un select (sans DISTINCT)
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 40
    Dernier message: 11/07/2006, 17h07
  3. Propriete SQL Distinct
    Par cbr5151 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/06/2006, 17h16
  4. REQUETE SQL : distinct / first
    Par partner35000 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/03/2006, 12h48
  5. [SQL/access] Doublon sur un champ
    Par kor dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/01/2005, 11h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo