Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 14/06/2006, 19h11   #1
Invité de passage
 
Inscription : juin 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 6
Points : 2
Points : 2
Par défaut [Mysql][tableur]récupération et mise en forme des données d'une base

Bonjour
Je viens de terminer un très gros formulaire en ligne,
dont les réponses représentent 34000 lignes dans la base Mysql. Pour exploiter ces données , j'extrais de la base les données de 4 champs :
Citation:
requête SQL :
SELECT `id_form` , `ele_caption` , `ele_value` , `uid`
FROM `xoops_form_form`
WHERE 1 AND `id_form` != 21 AND `ele_caption` != '{null}' AND `uid` != 0
y a t-il un moyen, par une requête SQL d'extraire les données, de façon à avoir toutes les réponses d'un user sur une seule ligne ?
du genre :


*correction sur l'image : uid=1 doit être sur la même ligne que ele_value=1

merci pour le coup de main
grandoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 11h06   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Bonjour

Le SGBD n'est pas l'outil plus approprié pour faire ce genre de mise en forme.

http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 11h06   #3
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
Si quelqu'un connait je suis preneur... mais je n'y crois pas

Je vois deux solutions :
- Si il y a un nombre fixé (ou un maximum petit) de réponses par utilisateur il est possible de faire des jointures prédéterminées, une par colonne. C'est moche et je suppose inapplicable ici.
- Passer par un GROUP BY et concaténer (GROUP_CONCAT) les résultats dans une colonne. Si c'est pour utiliser dans du code ça ne sera pas beaucoup plus simple à utiliser qu'une liste des réponses triées par utilisateur Si c'est pour finir en fichier csv (ou équivalent) on peut obtenir quelque chose en insérant des ';' lors de la concaténation (une version des CONCAT doit prendre un séparateur) afin de démultiplier la colonne.

A pars ça en se limitant à du SQL je ne vois pas.


Edit car arrivé après la bataille:
Citation:
Le SGBD n'est pas l'outil plus approprié pour faire ce genre de mise en forme.
Amen !
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 16h42   #4
Invité de passage
 
Inscription : juin 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 6
Points : 2
Points : 2
merci Maximilian
cela est effectivement une réponse, bien qu'avec mon niveau débutant dans le langage SQL, je n'ai pas réussi à reproduire pour mon cas :

j'ai essayé ça :
Citation:
FROM `xoops_form_form` WHERE `ele_caption` = 001 GROUP BY `uid`
xoops_form_form étant la table,
ele_caption la réponse d'un utilisateur (uid) à la question (ele_value) n° 001
juste une petite indiquation pour que j'avance dans la connaissance

merci aussi à Sivrît, mais j'ai pas tout compris à l'idée émise ...
grandoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2006, 22h40   #5
Invité de passage
 
Inscription : juin 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 6
Points : 2
Points : 2
bonsoir
J'approche du but, mais j'ai encore une erreur de débutant
que je n'arrive pas à trouver :
Citation:
Erreur

requête SQL :

SELECT `uid` , `ele_caption` , `ele_value`
FROM `xoops_form_form`
WHERE `id_form` != 21 AND `ele_caption` != '{null}' AND `ele_caption` = 001 AND `uid` != 0
GROUP BY `uid`
UNION
SELECT `uid` , `ele_caption` , `ele_value`
FROM `xoops_form_form`
WHERE `id_form` != 21 AND `ele_caption` != '{null}' AND `ele_caption` = 002 AND `uid` != 0
GROUP BY `uid`
LIMIT 0 , 30

MySQL a répondu:

You have an error in your SQL syntax near 'UNION SELECT `uid` , `ele_caption` , `ele_value` FROM `xoops_form_form` W' at line 1
je ne vois pas ce que le "w" vient faire là ?
à priori c'est le UNION qui pose pb ?
cordialement
grandoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2006, 12h24   #6
Invité de passage
 
Inscription : juin 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 6
Points : 2
Points : 2
Pour info, je viens de voir que UNION n'est pris en compte qu'à partir de Mysql 4.0.0 or sur mon hébergement OVH, la version de mysql est la 3.23.58
grandoc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2006, 14h20   #7
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Raison de plus pour gérer cette mise en forme dans ton appli plutôt qu'avec du SQL coûteux et inapproprié...
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h02.


 
 
 
 
Partenaires

Hébergement Web