如何在连接时返回备用列

问题描述 投票:0回答:1

我有一个表,其中列出了我网站的功能。说它有三列:

id - url - landing_page
1    a.php  a.html
2    b.php  b.html
3    c.php  c.html
4    d.php  d.html

然后我有一个表,其中每个用户都有他可以显示的功能:

id - 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上进行?

mysql sql join select mysql-5.7
1个回答
0
投票

您可以使用左联接,然后使用case表达式检查是否允许该页面:

SELECT    f.id, CASE WHEN id_use IS NULL 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
© www.soinside.com 2019 - 2024. All rights reserved.