1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 11
    Points : 10
    Points
    10

    Par défaut Jointure sur deux tables mais 2 champs d'une même table

    Bonjour,

    je ne parviens pas à réaliser une requête me permettant d'afficher une liste de membre et d'ajouter à mon tableau deux colonnes contenant deux valeurs présentes dans deux lignes différetnes d'une deuxième table ...

    voici ce que j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT C.id_customer, C.firstname, C.lastname, C.email, C.date_upd, F1.value AS nummembre, F2.value AS datecarte
    FROM veduu8aui_customer AS C, veduu8aui_customer_custom_field_value AS F
    JOIN veduu8aui_customer_custom_field_value AS F1 ON F.id_custom_field=1
    JOIN veduu8aui_customer_custom_field_value AS F2 ON F.id_custom_field=4
    WHERE C.id_customer = F.id_customer
    donc le but est d'obtenir donc la liste des membre présent dans la table veduu8aui_customer
    et d'ajouter les infos 'nummembre' et 'datecarte' de la table veduu8aui_customer_custom_field_value mais se travant dans deux lignes différentes

    en fait la table veduu8aui_customer_custom_field_value contient un certains nombre de lignes, chacune contenant des informations différentes concernant les membres ...

    Je ne parvient pas à obtenir une requète qui fonctionne ...

    merci par avance pour votre aide

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    janvier 2010
    Messages
    4 614
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2010
    Messages : 4 614
    Points : 9 351
    Points
    9 351

    Par défaut

    Bonjour

    quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    SELECT 
    		C.id_customer
    	,	C.firstname
    	,	C.lastname
    	,	C.email
    	,	C.date_upd
    	,	MAX(CASE WHEN F.id_custom_field =  1 THEN F.value END) AS nummembre
    	,	MAX(CASE WHEN F.id_custom_field =  4 THEN F.value END) AS datecarte
    FROM veduu8aui_customer AS C
    INNER JOIN  veduu8aui_customer_custom_field_value AS F
    	ON			C.id_customer = F.id_customer
    WHERE F.id_custom_field IN (1,4)
    GROUP BY
    		C.id_customer
    	,	C.firstname
    	,	C.lastname
    	,	C.email
    	,	C.date_upd
    [edit]requête corrigée suite à la remarque de Tatayo[/edit]

  3. #3
    Expert éminent
    Homme Profil pro
    Développeur Freelance
    Inscrit en
    janvier 2009
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Freelance

    Informations forums :
    Inscription : janvier 2009
    Messages : 3 276
    Points : 6 923
    Points
    6 923

    Par défaut

    Bonjour,
    aieeeuuuuu : un MAX sans GROUP BY ???

    Centaure-net:
    Je pense que la réponse n'était pas loin:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT C.id_customer, C.firstname, C.lastname, C.email, C.date_upd, F1.value AS nummembre, F2.value AS datecarte
    FROM veduu8aui_customer AS C
    JOIN veduu8aui_customer_custom_field_value AS F1 ON F1.id_custom_field=1 and C.id_customer = F1.id_customer
    JOIN veduu8aui_customer_custom_field_value AS F2 ON F2.id_custom_field=4 and C.id_customer = F2.id_customer
    Accessoirement, je passerai pas des jointures externe, au cas où l'une ou l'autre ne renvoie aucune ligne.

    Tatayo.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2005
    Messages : 11
    Points : 10
    Points
    10

    Par défaut Merci !

    Wouhaou !
    Merci beaucoup tatayo !
    C'est parfait !
    Oui j'étais pas loin ! ;-)

    du coup j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT C.id_customer, C.firstname, C.lastname, C.email, C.date_upd, F1.value AS nummembre, F2.value AS datecarte
    FROM veduu8aui_customer AS C
    LEFT JOIN veduu8aui_customer_custom_field_value AS F1 ON F1.id_custom_field=1 and C.id_customer = F1.id_customer
    LEFT JOIN veduu8aui_customer_custom_field_value AS F2 ON F2.id_custom_field=4 and C.id_customer = F2.id_customer
    Merci de me corriger si c'est pas bon ...

    encore merci

Discussions similaires

  1. [OpenOffice][Base de données] Générer une clé a partir de deux champs d'une même table
    Par fasfas dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 01/03/2010, 11h33
  2. Grouper deux champs d'une même table
    Par Bridou dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/04/2009, 11h18
  3. Jointure: Avec deux champs d'une même table
    Par Vinuto dans le forum PHP & MySQL
    Réponses: 4
    Dernier message: 25/11/2008, 21h10
  4. Jointure entre deux champs d'une même table
    Par oubli dans le forum Requêtes
    Réponses: 8
    Dernier message: 11/12/2007, 17h20
  5. Conditions sur les champs d'une même table
    Par Pucho dans le forum Modélisation
    Réponses: 10
    Dernier message: 19/10/2007, 18h52

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