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

Requêtes MySQL Discussion :

Requête avec table d'attributs


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Requête avec table d'attributs
    Je suis nouveau avec SQL, et j'ai une requête assez simple que j'aimerais être en mesure d'effectuer, mais je ne sais même pas comment l'intituler pour la rechercher dans le forum. Donc désolé si ce genre de demande existe déjà.

    J'ai 2 tables que je veux joindre, dont une qui contient des attributs. Voici un bref exemple:

    Table: USERS
    Champ1: id
    Champ2: email

    Table: ATTRIBUTES
    Champ1: userid (donc clé pour le join avec USERS.id)
    Champ2: attributeid (1, 2, 3, 4, 5, etc. 'nommés' dans une autre table)
    Champ3: value

    Pour mon exemple:
    attributeid=1 = Prénom
    attributeid=2 = Nom de famille
    attributeid=3 = Adresse
    etc.

    Comme résultat de requête, je veux un tableau qui comprendra les champs suivants:

    id email Prénom Nom de famille Adresse
    1 john@mail.com John Doe 123 de la rue
    2 jane@mail.com Jane Doe 234 de l'Avenue
    3 gil@mail.com Gil Brown 345 du Boulevard
    etc.

    Comment dois-je écrire ma requête pour parvenir à ce résultat ? Tout ce que je réussis à faire avec le peu de connaisances que j'ai est de sortir le id, l'email, suivi d'UN des attributs de mon choix, mais je ne sais pas comment en choisir plusieurs et les énumérer de la manière appropriée.

    Voici la requête que je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id, email, value AS 'Prénom'
    FROM users
    JOIN attributes 
    ON users.id=attributes.userid
    WHERE attribute=1
    (2 si je veux le nom de famille, 3 si je veux l'adresse, etc.)

    Mais je veux TOUS les attributs de mon choix pour un même USER.id sur la même ligne.

    Pouvez-vous m'aider ?

    Merci d'avance!

    Marco

  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,

    il faut faire plusieurs jointures sur la même table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT id, email, a1.value AS 'Prénom',a2.value as 'Nom', ....
    FROM users
    JOIN attributes a1 
    ON users.id=a1.userid and attribute=1
    JOIN attributes a2 
    ON users.id=a2.userid and attribute=2
    JOIN ....

Discussions similaires

  1. Optimisation requête avec table intermédiaire
    Par kango dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/05/2015, 18h29
  2. Requête avec table de liaison
    Par Doudy dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 10/05/2008, 19h09
  3. Requête avec tables variables
    Par alquinta dans le forum Modélisation
    Réponses: 6
    Dernier message: 10/08/2007, 17h52
  4. Requête avec table intermédiaire
    Par jgfa9 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/03/2007, 18h51
  5. Mise à jour de table impossible après requête avec jointure
    Par sto dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/03/2004, 13h24

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