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

 MySQL Discussion :

Requete sur un champ et évitez les doublons


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 15
    Points
    15
    Par défaut Requete sur un champ et évitez les doublons
    Bonjour,

    j'ai une table nommé "tableaux" avec plusieurs champs dont un champ : "artiste"

    Je souhaite faire une requête qui me renvoie les artistes unitairement (s'il sont plusieurs fois dans la table je ne les veux qu'une fois).


    La meilleur solution et la plus propre aurait été de faire plusieurs tables avec des liens entre elles . Une table Artiste, une table tableau ,... mais je veux rester dans une structure la plus simple possible !

    Note : J'utilise en complément du php

    Est ce possible en SQL ? Merci d'avance !

    Mon code erroné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql= ' SELECT * FROM `a2947866_tableau`.`Tableau` ';

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 029
    Points : 23 751
    Points
    23 751
    Par défaut
    Citation Envoyé par adien.fanget Voir le message
    La meilleur solution et la plus propre aurait été de faire plusieurs tables avec des liens entre elles . Une table Artiste, une table tableau ,... mais je veux rester dans une structure la plus simple possible !
    Parfois, un faux sentiment de simplicité peut entrainer des problèmes par la suite bien plus complexe .
    Enfin...

    Tu peux utiliser le mot-clef DISTINCT dans ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT artiste
    FROM Tableau
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Merci pour l'instruction !

    le problème simple devient plus vite que je pense compliquer !
    (Je sais j'étais prévenu )

    J'obtient bien des occurrences unique et sans doublon de mon champ 'artiste' néanmoins je souhaitais tous les champ de ma table !

    alors j'ai essayé de faire une sous requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql= ' SELECT * FROM (SELECT DISTINCT `Tableau`.`artiste` FROM `a2947866_tableau`.`Tableau` ) ORDER BY `artiste` ASC ';
    Mais sa ne fonction pas Why ?

    Message d'erreur : Every derived table must have its own alias

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 029
    Points : 23 751
    Points
    23 751
    Par défaut
    Citation Envoyé par adien.fanget Voir le message
    J'obtient bien des occurrences unique et sans doublon de mon champ 'artiste' néanmoins je souhaitais tous les champ de ma table !
    Si un artiste a plusieurs tableaux, il est normal que le nom de l'artiste sorte autant de fois qu'il a de tableaux. En SQL, tu ne peux pas obtenir une fois seulement le nom de l'artiste puis tous ses tableaux à la suite.
    Ca c'est le rôle du langage de programmation qui interroge la base de données .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Points : 15
    Points
    15
    Par défaut
    Roooô Zut !


    Merci quand même pour tous !

  6. #6
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par ced Voir le message
    Si un artiste a plusieurs tableaux, il est normal que le nom de l'artiste sorte autant de fois qu'il a de tableaux. En SQL, tu ne peux pas obtenir une fois seulement le nom de l'artiste puis tous ses tableaux à la suite.
    Ca c'est le rôle du langage de programmation qui interroge la base de données
    En fait, si, en faisant un GROUP BY sur le nom de l'artiste et un GROUP_CONCAT sur chacune des autres colonnes contenant les données des tableaux, charge ensuite au langage de programmation d'exploiter ces listes.
    Je ne sais pas ce qui est le plus simple, personnellement j'opterais pour la première solution.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ACCESS] requete sur un champ avec combinaison
    Par digitman dans le forum Requêtes et SQL.
    Réponses: 20
    Dernier message: 13/06/2007, 08h58
  2. pb Requete sur un champ pas sur l'objet
    Par Meunier dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/09/2006, 14h24
  3. Requete sur un champ reference
    Par kirty dans le forum Bases de données
    Réponses: 8
    Dernier message: 05/08/2006, 16h11
  4. Optimisation d'une requete sur un champ texte
    Par TARMINE dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/06/2006, 13h41
  5. requete sur un champs text
    Par sam01 dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/03/2006, 13h41

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