Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 11h13   #1
Membre habitué
 
Inscription : mai 2002
Messages : 475
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 475
Points : 105
Points : 105
Par défaut select complexe sur plusieurs tables

Bonjour,

je voudrais faire ce type de requete :

Code :
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 :
1
2
3
4
5
 
id 	log_id 	form_id 	value
 
8635 	  464 	          3 	Martin
8636 	  464 	          2 	Jean
Merci de votre aide
nicerico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 11h56   #2
Membre habitué
 
Inscription : mai 2002
Messages : 475
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 475
Points : 105
Points : 105
j'avance un peu

Code :
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 ...
nicerico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 12h27   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 14h04   #4
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

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

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Citation:
Envoyé par nicerico Voir le message
Code :
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)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 14h33   #5
Membre habitué
 
Inscription : mai 2002
Messages : 475
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 475
Points : 105
Points : 105
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
nicerico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 14h39   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 15h15   #7
Membre habitué
 
Inscription : mai 2002
Messages : 475
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 475
Points : 105
Points : 105
merci, c'est ce que je veux
oui j'en ai 8
ça risque de surcharger ?
nicerico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 15h18   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par nicerico Voir le message
ça risque de surcharger ?
Oui.
Lis le chapitre sur la cosmétique dont j'ai donné le lien dans mon message précédent.

Récupère les données en colonne et gère la présentation dans l'application cliente.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h48.


 
 
 
 
Partenaires

Hébergement Web