4 pièce(s) jointe(s)
Jointure à partir d'une même table
Bonjour,
je cherche à réaliser une requête se basant sur des infos de la même table.
Vous pouvez consulter les images jointes en bas de message.
En fait la table la plus importante est data (cf. image 1) et elle comprend une colonne idlang qui permet de préciser la langue des données d'un tuple et une colonne id_phrase qui permet d'identifier une phrase dans les différentes langues.
Ce que je cherche à obtenir, c'est une table qui se présenterait comme sur l'image 4. En gros je souhaite créer un tableau qui sur la même ligne comprend les informations pour les langues qui m'intéressent.
Pour ça, j'ai essayé plusieurs choses.
Déjà des jointures mais il existe différents types dont je ne connais pas précisément les différences mais je me suis lancé avec LEFT JOIN.
Pour le moment j'ai déjà voulu essayer de ne joindre que les données en français et en anglais.
Voilà ma requête mais apparemment il y aurait un problème de syntaxe. J'ai aussi essayer de mettre des parenthèses autour des SELECT.
Code:
1 2 3 4
| SELECT d1.id_phrase, d1.idicon, d1.titre AS tfr, d1.desc AS dfr FROM data AS d1 WHERE idlang=1
LEFT JOIN
SELECT d2.id_phrase, d2.titre AS ten, d2.desc AS den FROM data AS d2 WHERE idlang=2
ON d1.id_phrase=d2.id_phrase |
Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN SELECT d2.id_phrase, d2.titre AS ten, d2.desc AS den FROM data AS d2 W' at line 2
Alors j'ai créé des vues (phrasefr, phraseen et phrasejp) mais ça ne marche pas mieux.
Pourquoi ne puis-je pas utiliser les vues dans ce cas ?
Comment dois-je procéder pour obtenir le résultat voulu ?
Code:
1 2 3 4
| phrasefr
LEFT JOIN
phraseen
ON phrasefr.id_phrase=phraseen.id_phrase |
Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'phrasefr LEFT JOIN phraseen ON phrasefr.id_phrase=phraseen.id_phrase' at line 1
Pourtant d'après la doc la syntaxe est la suivante (entre autres) :
Code:
1 2 3 4 5 6
| reference_table LEFT [OUTER] JOIN reference_table condition_jointure
...
où reference_table est définie de la manière suivante :
nom_de_table [[AS] alias] [USE INDEX (liste_de_clefs)] [IGNORE INDEX (liste_de_clefs)]
et condition_jointure est définie comme suit :
ON expr_conditionnelle | USING (column_list) |
Merci d'avance.