问题描述
当nav_page不为null时,我如何将page_name导入为nav_label并将page_slug导入为nav_url?
我不知道有一个更好的主意来进行网站导航,以便在我获取导航时我总是希望从表格页面中获取页面名称,以防页面名称或页面标记有任何更改。
我已经尝试过此查询,但对我不起作用:
SELECT navigations.*,(CASE WHEN (navigations.nav_page IS NOT NULL) THEN pages.page_name AS page_label,pages.tr_slug AS page_url ELSE navigations.nav_label AS page_label,navigations.nav_url AS page_url END) FROM navigations,pages
页数表
+---------+-----------+-----------+ | page_id | page_name | page_slug | +---------+-----------+-----------+ | 1 | Home | /home | | 2 | Contact | /contact | +---------+-----------+-----------+
导航表
+--------+-----------+------------------------+----------+----------+ | nav_id | nav_label | nav_url | nav_page | nav_type | +--------+-----------+------------------------+----------+----------+ | 1 | Google | https://www.google.com | NULL | custom | | 2 | NULL | NULL | 2 | page | +--------+-----------+------------------------+----------+----------+
解决方法
如果我正确地关注您,则可以left join
:
select n.nav_id,coalesce(p.page_slug,n.nav_url) as nav_url,coalesce(p.page_name,n.nav_label) as nav_label,n.nav_type
from navigations n
left join pages p on page_id = n.nav_page