Bonjour,

J'ai une table regroupant tous les noms de produits en français et en anglais, de la forme suivante (product_line_name_id, product_line_name, link_rewrite, lang_id), avec des enregistrements du type :

id | product_line_name | link_rewrite | lang_id
------------------------------------------------------------------------
1 | clé Allen 8 mm | cle-allen-8-mm | 1
2 | 8 mm Allen wrench | 8-mm-allen-wrench | 2
3 | tournevis cruciforme 6 mm | tournevis-cruciforme-6-mm | 1
4 | 6 mm Phillips screwdriver | 6-mm-phillips-screwdriver | 2
....

Le but de la requête est de ne sélectionner que le nom (product_line_name) et le lien (link_rewrite) en anglais (lang_id = 2) et d'y joindre le lien (link_rewrite) correspondant en français (lang_id = 1), uniquement sur les produits disposant des 2 traductions, de façon à obtenir ceci :

name_en | slug_en | slug_fr
------------------------------------------------------------------------------------------------
8 mm Allen wrench | 8-mm-allen-wrench | cle-allen-8-mm
6 mm Phillips screwdriver | 6-mm-phillips-screwdriver | tournevis-cruciforme-6-mm


J'ai tenté d'utiliser une sous-requête renvoyant une table mais je n'arrive pas à faire remonter la valeur du slug_fr depuis la sous-requête. Est-ce possible ?
Y a t-il une alternative pour arriver à ce résultat ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
SELECT pln2.product_line_name as name_en, pln2.link_rewrite as slug_en, pln1.slug_fr
FROM product_line_name pln2
LEFT JOIN
(SELECT pln.product_line_name_id as id1, pln.link_rewrite as slug_fr
FROM product_line_name pln
WHERE pln.lang_id = 1) pln1
ON pln2.product_line_name_id = pln1.id1
WHERE pln2.lang_id = 2
Merci par avance de votre aide
Vincent