0

皆さんお元気ですか?

私の英語で申し訳ありません。

私は2つのテーブルを持っています

メニューmenus_localization

メニュー表

| id_menu | section_menu | active_menu |
|    1    |    footer    |     yes     |
|    2    |    footer    |     yes     |

ローカリゼーション テーブル

| id_localization | id_menu |   name_menu   | link_menu                   | language_menu |
|       1         |    1    |      Home     |  http://example.com         |    english    |
|       2         |    1    |الصفحة الرئيسية|  http://example.com         |     arabic    |
|       3         |    2    |     signup    |  http://example.com/signup  |     english   |

今、私はアラビア語のメニューを手に入れたいと思っています。それが存在しない場合は、英語で入手してください。

このような:

الصفحة الرئيسية
Signup

これは私のクエリです:

SELECT *
FROM (`menus_localization` ML)
JOIN `menus` MS ON `MS`.`id_menu` = `ML`.`id_menu`
WHERE `MS`.`section_menu` =  'footer'
AND `ML`.`language_menu` =  'Arabic'
OR `ML`.`language_menu` =  'English'
GROUP BY `ML`.`id_menu`
4

2 に答える 2

0

これを実現するには、id と language を使用して 2 回参加menusする必要があります。null でない場合はorをmenus_localization使用して最初にアラビア語を取り込み、それ以外の場合は英語にフォールバックします。COALESCE()IFNULL()menu_name

SELECT m.id_menu, 
       m.section_menu, 
       m.active_menu,
       COALESCE(l2.name_menu, l1.name_menu) name_menu,
       COALESCE(l2.link_menu, l1.link_menu) link_menu
FROM menus m LEFT JOIN 
     menus_localization l1 ON m.id_menu = l1.id_menu AND 
                              l1.`language_menu` =  'english' LEFT JOIN
     menus_localization l2 ON m.id_menu = l2.id_menu AND 
                              l2.`language_menu` =  'arabic'

SQLFiddle の例

于 2013-03-12T20:17:52.067 に答える
0

追加したタグからphpを使用していると思います。その場合は、ページの情報を取得するクエリを実行してください。このようなもの :

SELECT * FROM your_table  WHERE id_menu ='1'

このクエリでは、次の 2 つの結果が得られます。

|       1         |    1    |      Home     |  http://example.com         |    english    |
|       2         |    1    |الصفحة الرئيسية|  http://example.com         |     arabic    |

if ステートメントを使用して、表示する言語を決定できます

if($arabic) { // display arabic } else { // display english}
于 2013-03-12T20:15:45.310 に答える