使用mysql查询获取基于语言的详细信息?

时间:2016-03-21 11:57:27

标签: mysql

我的应用程序支持多种语言,我想根据语言ID获取优惠详情。 我可以加入,但我的挑战是如果所选语言没有值,则获取默认语言文本。

我的报价标题可以包含两种语言的文本。默认语言是强制性的,提供标题应该在那里。 但有时用户不会以第二语言输入报价标题, 当用户浏览第二语言的商品列表时,我想从默认语言中获取商品标题,因为所选语言商品标题不存在。 如何在单个列表查询中执行:(

我的表格结构如下,

enter image description here

如何使用MySQL?

1 个答案:

答案 0 :(得分:0)

在SELECT语句中使用CASE开关,为方便起见,将其包装在存储过程中。

CREATE PROCEDURE get_offer(
  IN p_language_id INT,
  IN p_offer_id INT
)
BEGIN
    SELECT * 
      FROM Offers o
      JOIN Offer_details od
        ON o.id = od.offers_id
      JOIN languages l
        ON l.id = od.languages.id
      WHERE
        CASE WHEN
          p_language_id IS NOT NULL
         THEN
          p_language_id = l.id
         ELSE
          is_default = TRUE
        END
        AND p_offer_id = o.id
END

然后,如果他们的语言ID设置为CALL get_offer($lid,$oid),或者如果不是CALL get_offer(null,$oid)

,则可以从您的应用中调用它