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 :

comment faire une requete qui retourne les données repetées ?


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Par défaut comment faire une requete qui retourne les données repetées ?
    Bonjours

    comment faire une requete qui retourne les valeurs répetées d'un champs dans une table
    (exp: le champs 'mat contient {11,12,14,11,13,14} ma requete doit retourner
    11 et 14)
    merci

  2. #2
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut


    une requête select avec un Group By et un Having.


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Mat
    FROM MaTable
    GROUP BY mat HAVING (count(mat)>1);

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Par défaut
    La requête SQL suivante fonctionne également

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Mat
    FROM MaTable
    GROUP BY mat HAVING (count(*)>1);

  4. #4
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par sillycoder
    La requête SQL suivante fonctionne également

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Mat
    FROM MaTable
    GROUP BY mat HAVING (count(*)>1);

    Moi je mettrais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Mat
    FROM MaTable
    GROUP BY mat HAVING (count(1  )>=2);
    count(1) => ca lit pas les champs donc c'est plus rapide...

    >=2 ... si je me souviens bien le having prefere ca ....

  5. #5
    Membre émérite Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Par défaut
    Citation Envoyé par miloux32
    count(1) => ca lit pas les champs donc c'est plus rapide...

    >=2 ... si je me souviens bien le having prefere ca ....


    avec quel sgbd ?

  6. #6
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par Mathusalem
    avec quel sgbd ?
    le premier avec tous ....

    count(*) ca equivaut a faire "count(unchamp)" donc il a besoin de parcourir le bloc pour avoir la valeur du champ ....

    count(1) => ben il lit 1 donc pas de lecture de champs .....


    pour le having , je crois me souvenir que la clause "=" (ou >=) permet d'utiliser les index etc ...

    je sais que c'est bon en oracle et en principe ca doit etre bon pour les autres ..( en plus ca coute rien de faire ca )

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/04/2015, 07h54
  2. Réponses: 2
    Dernier message: 08/01/2009, 11h49
  3. Réponses: 10
    Dernier message: 13/08/2007, 16h12
  4. faire une requete qui ne sort que les valeurs d'un champ coché
    Par joseph.breham dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 13/12/2006, 16h01
  5. Réponses: 2
    Dernier message: 16/10/2006, 09h22

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