如何 return 加入替代列
how to return alternative columns on join
我有一个 table,其中包含我网站的功能列表。假设它有三列:
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
然后我有一个 table 对于每个用户我有他可以显示的那些功能:
id_usr - func
1 1
1 3
我的查询选择了允许用户查看的功能以及 return 他们的 url。因此,对于示例数据,它 returns
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
我想知道如何改进我对 return 未授权功能登录页面的查询。所以结果应该是:
a.php, b.html, c.php, d.html
因此对于那些不在用户范围内的页面,而不是 url,return landing_page 列的值。
如何使用 mysql 5.7 继续这个?
编辑以使列更易读
您可以使用左连接,然后使用 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
我有一个 table,其中包含我网站的功能列表。假设它有三列:
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
然后我有一个 table 对于每个用户我有他可以显示的那些功能:
id_usr - func
1 1
1 3
我的查询选择了允许用户查看的功能以及 return 他们的 url。因此,对于示例数据,它 returns
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
我想知道如何改进我对 return 未授权功能登录页面的查询。所以结果应该是:
a.php, b.html, c.php, d.html
因此对于那些不在用户范围内的页面,而不是 url,return landing_page 列的值。
如何使用 mysql 5.7 继续这个? 编辑以使列更易读
您可以使用左连接,然后使用 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