Bonjour à tous,
J'ai un problème simple et classique, mais dont je ne trouve pas la solution.
Il s'agit d'un projet scientifique à vocation statistique et visant une certaine souplesse d'exploitation, ce qui explique que je stocke mes données de manière peu orthodoxe.
Pour faire court, j'ai une table data de type :
etc. (associées à deux autres tables, l'une pour les individus, l'autre les variables).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 id_individu | id_variable | valeur ================================== 1 | 1 | "rouge" 1 | 2 | 2 1 | 3 | "beaucoup" 2 | 1 | "bleu" 2 | 2 | 3 2 | 3 | "un peu"
et je veux créer une requête me permettant de "recolonniser" (dsl) les données en tableau de type "excel", comme suit :
J'ai commencé par utiliser des sous requêtes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 id_individu | var1 | var2 | var3 ================================== 1 | "rouge" | 2 | "beaucoup" 2 | "bleu" | 3 | "un peu"
Ça marche. Sauf qu'avec 300 variables et 700 individus pour plus de 50000 lignes, la bécane s'étouffe à chaque coup (déjà au-delà de 10, c'est dur...). Il me faut donc une autre méthode.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT id_individu, (SELECT value FROM `data` WHERE id_var = '1') AS var1, (SELECT value FROM `data` WHERE id_var = '2') AS var2, (SELECT value FROM `data` WHERE id_var = '3') AS var3 FROM `data`
J'ai songé aux RIGHT OUTER JOIN, et à utiliser des conditions (IF (id_var = '1', value, ''), mais ça répond pas au problème.
Je cherche encore mais si l'un d'entre vous connaît la solution ou est prêt à donner une piste, je suis preneur...
Merci d'avance et bonne journée,
==> Je précise : je suis sous MySQL 5.0.
Partager