【问题标题】:SQL query: Listing product descriptionsSQL查询:列出产品描述
【发布时间】:2026-02-18 20:50:01
【问题描述】:

我正在尝试根据指定语言列出我所有产品的描述,如果没有找到该语言的翻译,则采用默认语言。

请看一下这个贴,一切都说明了预期的结果:

http://pastebin.com/m306e670c

我已经为此工作了几天,非常感谢您的帮助!

【问题讨论】:

  • @dom。我会采用 rexem 的 SELECT 语句并基于它创建一个视图。然后,您可以进行选择,根据需要按产品和语言添加过滤器。
  • @dom。 ...需要将“lang”和“productid”作为附加列添加到该视图

标签: sql mysql


【解决方案1】:

请注意,语言是在 JOIN 上定义的

   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

如果您在 WHERE 子句中过滤语言,它将不起作用。

【讨论】:

  • +1 假设每个产品 ID 都有一个 is_default 标签。否则,我将从(FROM)默认语言左连接开始(并将 t.is_default 指定为 JOIN 的另一个条件,而不是在 WHERE 子句中)
  • @van:你不能从想要的语言开始——如果想要的语言不存在,你就不会得到 product_ids,所以尝试获取默认语言是没有价值的short_description 值。