我有2个表,第一表具有类别的所有值,但我不想向每个客户显示所有类别
cat_id cat_name is_hidden
1 cat no
2 cat1 no
3 cat2 no
4 cat3 no
5 cat4 yes
6 cat5 yes
现在在我的sql查询中,我得到的所有值都在ins_hidden列中在我的其他表中,我批准一些客户显示类别表结构是
id cat_id client_id
1 5 1
现在,我想从表中显示所有广告系列,iS_hidden是否,现在我已经批准了表2中的客户
现在如何加入SQL以获得所需的结果。
这是我尝试过的代码。
Approvals::where('client_id',$client_id)
->rightJoin('tbl_cat', function ($join) {
$join->on('tbl_cat.cat_id', '=', 'tbl_approval.approval_id');
$join->where('tbl_cat.is_hidden','=','no');
});
,但我没有在输出中获得5类。
这无法通过加入来实现。您应该使用Union都喜欢关注
SELECT
*
FROM
table1
WHERE
is_hidden = 'no'
UNION ALL
SELECT
t.*
FROM
table2 t2 INNER JOIN table1 t ON t.id = t2.cat_id
WHERE
t2.client_id = 1
您的加入应该在cat_id
上,以便您获得cat_id
5的记录。希望它能帮助您。
Approvals::where('client_id',$client_id)
->rightJoin('tbl_cat', function ($join) {
$join->on('tbl_cat.cat_id', '=', 'tbl_approval.cat_id');
$join->where('tbl_cat.is_hidden','=','no');
});