我有一个表,列出了我的网站的功能。假设它有三栏:
id_usr - url - landing_page
1 a.php a.html
2 b.php b.html
3 c.php c.html
4 d.php d.html
然后,我有一个表,每个用户都有他可以显示的功能:
id_usr - func
1 1
1 3
我的查询选择允许用户查看的功能,并返回他们的url。因此,对于它返回的示例数据
a.php,c.php
这是正确的。查询是:
SELECT titolo, descr1,descr2, url, url_opz
FROM `funzioni` JOIN funz_abilitate ON funz_abilitate.id_funzione=id
WHERE funz_abilitate.id_user = $id
我想知道如何改进我的查询,以返回未授权的功能的登陆页。因此,结果应该是:
a.php,b.html,c.php,d.html
因此,对于用户不在范围内的页面,而不是url,返回landing_page列的值。
如何使用mysql 5.7进行此操作?编辑以使列更具可读性
发布于 2020-04-04 15:40:36
您可以使用左联接,然后使用case
表达式检查页面是否允许:
SELECT f.id, CASE WHEN id_user IS NOT NULL THEN url ELSE landing_page END
FROM funzioni f
LEFT JOIN funz_abilitate fa ON fa.id_funzione = f.id AND fa.id_user = $id
https://stackoverflow.com/questions/61030486
复制相似问题