2009-08-31 6 views
0

J'essaye de lister la description de tous mes produits selon une langue spécifiée, et si aucune traduction n'est trouvée pour cette langue, alors la valeur par défaut est prise à la place.Requête SQL: Liste des descriptions de produits

S'il vous plaît jeter un oeil à cette pâte, tout est expliqué avec les résultats attendus:

http://pastebin.com/m306e670c

Je travaille sur ce pendant plusieurs jours, votre aide est grandement appréciée!

+0

@dom. Je prendrais l'instruction SELECT par * rexem * et créerais une vue basée dessus. Ensuite, vous pouvez faire vos sélections, en ajoutant des filtres par produits et langues que vous le souhaitez. – van

+0

@dom. ... besoin d'ajouter 'lang' et 'productid' comme colonnes supplémentaires à cette vue – van

Répondre

1

Notez que la lang est définie sur la jointure

SELECT COALESCE(pd.short_description, t.short_description) 
    FROM PRODUCT_DESCRIPTIONS t 
LEFT JOIN PRODUCT_DESCRIPTIONS pd ON pd.product_id = t.product_id 
           AND pd.lang = 'mk' 
    WHERE t.is_default = 1 

Il ne fonctionnera pas si vous filtrez la langue dans la clause WHERE.

+0

+1 en supposant qu'il existe une étiquette * is_default * pour chaque identifiant de produit. Sinon, je commencerais par (FROM) la langue désirée en rejoignant la valeur par défaut (et en spécifiant t.is_default comme une autre condition de JOIN plutôt que dans la clause WHERE) – van

+0

@van: Vous ne pouvez pas commencer par la langue désirée - vous n'obtiendrez pas le fichier product_ids lorsque la langue souhaitée n'existe pas. Il ne sert donc à rien d'essayer d'obtenir la valeur par défaut short_description du langage. –

Questions connexes