2016-03-21 10 views
0

複数の言語をサポートする私のアプリケーションでは、言語IDに基づいてオファーの詳細を取得したいと考えています。 私は参加することができますが、選択した言語の価値がない場合、デフォルトの言語テキストを取得することが課題です。 2つのlanguages.default言語でテキストを持つことができますmysqlクエリを使用して言語に基づいた詳細を取得しますか?

すなわち、

私の申し出のタイトルは必須であり、提供タイトルはあるはずです。 ただし、ユーザーが第2言語でオファータイトルを入力すると、 ユーザーが第2言語でオファーリストを閲覧するときに、選択した言語オファータイトルが存在しないため、デフォルト言語からオファータイトルを取得したいことがあります。私のテーブルの構造は下記の方法私は、単一リストクエリで行うことができます:(

、私はMySQLを使用して達成することができますどのように

enter image description here

答えて

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 

CALL get_offer($lid,$oid)で設定した言語ID、またはそうでない場合はCALL get_offer(null,$oid)

関連する問題