从ID不相同的两个表中获取用户

时间:2019-03-06 21:11:54

标签: sql laravel

我偶然地查询了Rest API。想听听您的建议。

现在我有两个表:

  1. 公司用户:它存储有关注册用户的主要信息,例如: id,姓名,电子邮件,电话号码。
  2. Matching_users :其中存储以下信息: active_user_id,matching_user_id ,其中活动用户ID是授权用户ID,匹配用户ID是授权用户之前遇到的任何其他用户ID。

问题是:如何执行查询以获取所有其他用户(授权用户ID除外,以及授权用户之前曾与之见过的用户)?

例如:

TABLE: company_users


ID | NAME |电子邮件


1 |杰克jake@gmail.com


2 |简| jane@gmail.com


3 |雅各布| jacob@gmail.com


4 |六月| june@gmail.com

TABLE: matching_table

ID | ACTIVE_USER_ID | MATCHING_USER_ID


1 | 1 | 2

我如何只为授权用户执行来自 company_users ID为3和4的用户?

2 个答案:

答案 0 :(得分:0)

获取表2的所有行:

$matching_rows = MatchingTable::all();
$active_users = $matching_rows->pluck('active_user_id')->toArray();
$matching_users = $matching_rows->pluck('active_user_id')->toArray();

将它们合并在一起:

$auth_users = array_merge($active_users, $matching_users);

使用whereNotIn:

$unauth_users = Users::whereNotIn('id', $auth_users)->get()`

答案 1 :(得分:0)

请尝试这个。

如果不是ACTIVE_USER_ID,则

Select * from company_users
Where Id NOT IN ( SELECT Distinct ACTIVE_USER_ID  FROM matching_table)

如果不包含MATCHING_USER_ID,则

Select * from company_users
Where Id NOT IN ( SELECT Distinct MATCHING_USER_ID FROM matching_table)

如果不是ACTIVE_USER_ID和MATCHING_USER_ID,那么

Select * from company_users
Where Id NOT IN ( SELECT Distinct MATCHING_USER_ID  FROM matching_table)
AND Id NOT IN ( SELECT Distinct ACTIVE_USER_ID  FROM matching_table)
相关问题