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 :

distinct et enregistrements


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut distinct et enregistrements
    Bonjour,

    Je cherche a obtenir des enregistrements distinct. Je connais distinct mais uniquement pour obtenir un champ. Mon but est d'obtenir l'enregistrement en entier.

    J'ai une table:
    ID prod champ1 champ2
    2 1 550 400 0
    3 2 500 200 1
    4 1 550 400 0

    Comment obtenir uniquement les enregistrements avec distinct prod?
    $prod = mysql_query("SELECT DISTINCT prod, ID, Champ1, Champ2 FROM Liens WHERE ORDER BY IDL"); ne fonctionne pas ... :/
    Mon but est donc d'obtenir :
    3 2 500 200 1
    4 1 550 400 0
    (je ne prend que le dernier des doublons)

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut,

    un distinct est valable sur toute la ligne, donc il te cherche les lignes différentes

    fait plutot ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  prod, ID, Champ1, Champ2 FROM Liens group by prod
    je sais pas ce que c'est ceci :

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut ok
    Parfait ca fonctionne nickel. J'avais un peu oublié cette fonctionnalité...
    Par contre, comment choisir le dernier enregistrement dans group by ? Car il me prend par défaut le premier ?

    Merci encore.

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    comment tu classifie tes enregistrements?
    regarde du coté de 'order by' (desc ou asc) en fonction de ce que tu veux faire

  5. #5
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par Cybher
    fait plutot ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  prod, ID, Champ1, Champ2 FROM Liens group by prod
    Un GROUP BY sans utiliser aucune des fonctions d'agrégation (COUNT, SUM, MAX, etc.) ne renvoie pas plus que ce qu'on peut obtenir par un DISTINCT

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    Désolé de te contredire Bujuman mais je ne suis pas d'accord !

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create table test(id int, nombre int):
    insert into test values (1,1);
    insert into test values (1,2);
    si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select distinct id, nombre from test
    cela me retourne 2 enregistrements

    et si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id,nombre from test group by id
    je n'ai qu'un enregistrement


    Bye

    Michel

  7. #7
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par Cybher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select id,nombre from test group by id
    je n'ai qu'un enregistrement
    Bye
    Michel
    Sous Sql Server tu as ceci comme message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    La colonne 'test.nombre' n'est pas valide dans la liste de sélection 
    parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la 
    clause GROUP BY.

  8. #8
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    sous mysql ca passe, j'ai de la chance

  9. #9
    Membre habitué
    Inscrit en
    Avril 2005
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 123
    Points : 132
    Points
    132
    Par défaut
    As tu essayé aussi la possibilité DISTINCTROW?

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 048
    Points
    53 048
    Billets dans le blog
    6
    Par défaut
    DISTINCTROW n'existe pas en SQL c'est une débilité profonde d'acces !!!

    Lisez l'article que j'ai écrit sur le sujet :
    http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L8.1

    A +

Discussions similaires

  1. [MySQL] récupérer des DISTINCT enregistrements
    Par salyiohh dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/07/2014, 13h20
  2. [MySQL] select distinct su certains enregistrements
    Par tapi21 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/12/2013, 17h01
  3. Réponses: 4
    Dernier message: 25/09/2009, 23h54
  4. Réponses: 3
    Dernier message: 20/08/2009, 13h52
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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