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 ?
Merci par avance de votre aide
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
Vincent
Partager