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 :

select complexe sur plusieurs tables


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Par défaut select complexe sur plusieurs tables
    Bonjour,

    je voudrais faire ce type de requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT 
    Case 
    When f.form_id= 3 Then f.value as nom 
    When f.form_id= 2 Then f.value as prenom 
    FROM `wp_wpsc_submited_form_data`  f
    left join wp_wpsc_purchase_logs l on l.id = f.log_id
    where l.processed = 3
    Mais j'ai toujours une erreur

    mon but est d'afficher les coordonnées d'un client pour une commande
    les coordonnées sont dans la table wp_wpsc_submited_form_data
    les commandes dans wp_wpsc_purchase_logs

    wp_wpsc_submited_form_data se presente ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id 	log_id 	form_id 	value
     
    8635 	  464 	          3 	Martin
    8636 	  464 	          2 	Jean
    Merci de votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Par défaut
    j'avance un peu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT
    CASE  WHEN f.form_id=3  and f.value <>"" THEN f.value END AS nom,
    CASE  WHEN f.form_id=2 and f.value <>"" THEN f.value END AS prenom
    from wp_wpsc_submited_form_data f
    LEFT JOIN wp_wpsc_purchase_logs l ON l.id = f.log_id
    WHERE l.processed = 3
    plus d'erreur mais l'affichage des resultats est bizarre ...

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ma boule de cristal est HS !

    Quel résultat souhaites-tu ?
    Quel résultat obtiens-tu ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    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 : 73
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Citation Envoyé par nicerico Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT
    CASE  WHEN f.form_id=3  and f.value <>"" THEN f.value END AS nom,
    CASE  WHEN f.form_id=2 and f.value <>"" THEN f.value END AS prenom
    from wp_wpsc_submited_form_data f
    LEFT JOIN wp_wpsc_purchase_logs l ON l.id = f.log_id
    WHERE l.processed = 3
    Saluton,
    Et que doit mettre MySQL dans les colonnes nom et prenom quand f.form_id IS NOT IN(2,3) ?
    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)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Par défaut
    j'aimerais comme resultat ds ligne composé de
    nom | prenom |

    mais j'obtiens :
    nom | vide |
    vide | prenom

    Extrait de wp_wpsc_submited_form_data :

    id log_id form_id value
    8635 464 3 BARTHELEMY
    8636 464 2 Valérie
    8637 464 9 vbarthelemy@laposte.net
    8638 464 21 49

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Comme tu veux récupérer deux informations dans la même colonne et en faire deux colonnes, tu dois faire une auto-jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT f1.value AS nom,
        f2.value AS prenom
    FROM wp_wpsc_submited_form_data f1
    INNER JOIN wp_wpsc_submited_form_data f2 ON f2.log_id = f1.log_id
    LEFT OUTER JOIN wp_wpsc_purchase_logs l ON l.id = f.log_id
    WHERE l.processed = 3
        AND f1.form_id = 3
        AND f2.form_id = 2
    Mais ceci est de la cosmétique et devrait être mis en oeuvre par le logiciel qui présente les données à l'utilisateur.
    Si tu as 15 form_id différents à récupérer, tu devras faire 15 jointures !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 616
    Par défaut
    merci, c'est ce que je veux
    oui j'en ai 8
    ça risque de surcharger ?

Discussions similaires

  1. SELECT Complexe sur plusieurs tables
    Par eowene dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/01/2007, 14h43
  2. [Oracle] Plusieurs select max() sur plusieurs tables
    Par Xavier2701 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/06/2006, 17h36
  3. select multiple sur plusieurs tables
    Par syl2095 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/12/2004, 15h48
  4. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  5. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 17h50

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