|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre du Club
![]() Padawan Informaticien en recherche d'emploi (Bac+3 Administration des Systèmes et des Réseaux) Inscription : novembre 2006 Messages : 67 ![]() |
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 :
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
Pourquoi ne puis-je pas utiliser les vues dans ce cas ? Comment dois-je procéder pour obtenir le résultat voulu ? Code :
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
Code :
|
||||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 099 ![]() |
Bonjour,
La bonne syntaxe est la suivante: Code SQL :
Tatayo |
||
|
|
00
|
|
|
#3 | ||
![]() ![]() |
Si votre nombre de langues est fixe et connu à l'avance, vous pouvez construire un PIVOT :
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#4 | ||||
|
Membre du Club
![]() Padawan Informaticien en recherche d'emploi (Bac+3 Administration des Systèmes et des Réseaux) Inscription : novembre 2006 Messages : 67 ![]() |
Bonjour,
Merci pour vos réponses. Au début j'ai eu un peu de mal à adapter la syntaxe de Tatayo mais j'y suis finalement parvenu et ça semble bien marcher. Voici la nouvelle requête Code :
Pour ta requête Waldar, merci de ta participation mais il semble qu'il y aurait une erreur de syntaxe aussi. 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 'DESC end) AS dfr , max(case idlang when 2 then titre end) AS ten ' at line 4
![]() Rectification : ça marche aussi. J'ai modifié le nom de colonne desc en descr pour éviter l’ambiguïté avec le mot clé DESC et après avoir mis à jour la requête et testé ça marche très bien. Merci à vous deux. Va falloir que je comprenne ta syntaxe Waldar. Est-ce qu'un bloc case se termine par end en SQL ? Par contre pour moi max() c'était juste pour trouver le maximum parmi des nombres... J'arrive pas trop à comprendre son utilisation ici. La question est résolue mais j'aimerais bien avoir une explication dessus. Alors je mettrais à jour le titre du topic. Encore merci à vous. ![]() EDIT: J'ai réussi avec la syntaxe de Tatayo en modifiant comme suit : Code :
|
||||
|
|
00
|
|
|
#5 |
|
Membre actif
![]() Inscription : janvier 2012 Messages : 117 ![]() |
Pour la syntaxe des 2 types de CASE, tu peux la trouver à http://sqlpro.developpez.com/cours/sqlaz/select/#L7 .
Pour les colonnes utilisant des mots-clés réservés, tu peux en général utiliser les crochets, ce qui dans ton cas donnerait [DESC]. Mais c'est une mauvaise pratique et il vaut mieux utiliser des noms non-réservés. |
|
|
00
|
|
|
#6 | ||||
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 099 ![]() |
Code SQL :
Code SQL :
Tatayo. |
||||
|
|
10
|
|
|
#7 |
|
Membre du Club
![]() Padawan Informaticien en recherche d'emploi (Bac+3 Administration des Systèmes et des Réseaux) Inscription : novembre 2006 Messages : 67 ![]() |
Je sais même pas la différence entre jointure externe et interne.
![]() Ni même ce qu'une jointure naturelle, croisée et cie... J'ai juste rencontré ces termes en lisant un peu la doc. En tout cas merci pour la remarque. Mine de rien c'est complexe MySQL quand on veut maitriser. KookieMonster. Merci pour le tuto/doc. Ça va bien plus loin que mes cours ou mes bouquin de PHP/MySQL. Bon allez zou ! Question résolue. ![]() PS : C'est quoi ce délire ?! Je ne peux plus éditer le premier message et je ne vois pas de bouton pour mettre la question en résolue. Ça se passe comment ? Re : Ça y est j'ai trouvé. C'est pas une super idée de le mettre tout en bas je trouve... |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 655 ![]() |
Les éditions de message sont restreinte dans le temps. Ca évite que des personnes suppriment le contenu des postes une fois le problème résolu.
Pour les jointures : http://sqlpro.developpez.com/cours/sqlaz/jointures/ |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com