你们好吗?
对不起我的英语。
我有两张桌子
菜单和 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`
答案 0 :(得分:0)
我假设你使用的是你添加的标签中的php。如果是这样,请执行检索页面信息的查询。 像这样的东西:
SELECT * FROM your_table WHERE id_menu ='1'
使用此查询,您将获得两个结果:
| 1 | 1 | Home | http://example.com | english |
| 2 | 1 |الصفحة الرئيسية| http://example.com | arabic |
您可以使用if语句来确定要显示的语言
if($arabic) { // display arabic } else { // display english}
答案 1 :(得分:0)
要实现这一点,您需要使用ID和语言两次加入menus
和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 example 强>