我的应用程序支持多种语言,我想根据语言ID获取优惠详情。 我可以加入,但我的挑战是如果所选语言没有值,则获取默认语言文本。
即
我的报价标题可以包含两种语言的文本。默认语言是强制性的,提供标题应该在那里。 但有时用户不会以第二语言输入报价标题, 当用户浏览第二语言的商品列表时,我想从默认语言中获取商品标题,因为所选语言商品标题不存在。 如何在单个列表查询中执行:(
我的表格结构如下,
如何使用MySQL?
答案 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)