SQL 用两个 orWhere 查询
SQL query with two orWhere
我需要你的帮助。
我无法执行 sql 查询。
我有两个 tables,patients and user
,在患者 table 我有字段, name,last name, personal_id, strikes
和 users
table 我有一个名为 status
的字段。我澄清一下,personal_id
是公司分配的代码,不同于PK。
在系统逻辑中,用户可以 'disabled' 有两个原因。
1.-管理员把用户状态放在Inactive
2.-用户有3次或以上的罢工。
所以我要执行的查询如下。
给定一个 value
,return 我所有匹配 personal_id OR last name
的用户还有什么
用户不活跃 (Either for reasons 1 or 2
)
$patients= DB::table('patiens')
->join('users','patiens.User_ID','=','users.id')
->where('users.status','=','Inactive')
->orwhere('patiens.strikes','>=',3)
->where('patiens.last_name','like','%'.$date.'%')
->orwhere('patiens.personal_id','like','%'.$date.'%')
->get();
基本上我需要我的查询来完成这个:
This...
->where('users.status','=','Inactive')
->orwhere('patiens.strikes','>=',3)
AND ALSO
->where('patiens.last_name','like','%'.$date.'%')
->orwhere('patiens.personal_id','like','%'.$date.'%')
基本上,首先提取 All Inactive
然后在该列表中查找所有匹配项
您可以在回调中嵌套条件:
$patients= DB::table('patiens')
->join('users','patiens.User_ID','=','users.id')
->where(function ($query) {
$query->where('users.status','=','Inactive')
->orwhere('patiens.strikes','>=',3);
})->where(function ($query) use ($date) {
$query->where('patiens.last_name','like','%'.$date.'%')
->orwhere('patiens.personal_id','like','%'.$date.'%');
})
->get();
我需要你的帮助。
我无法执行 sql 查询。
我有两个 tables,patients and user
,在患者 table 我有字段, name,last name, personal_id, strikes
和 users
table 我有一个名为 status
的字段。我澄清一下,personal_id
是公司分配的代码,不同于PK。
在系统逻辑中,用户可以 'disabled' 有两个原因。
1.-管理员把用户状态放在Inactive
2.-用户有3次或以上的罢工。
所以我要执行的查询如下。
给定一个 value
,return 我所有匹配 personal_id OR last name
的用户还有什么
用户不活跃 (Either for reasons 1 or 2
)
$patients= DB::table('patiens')
->join('users','patiens.User_ID','=','users.id')
->where('users.status','=','Inactive')
->orwhere('patiens.strikes','>=',3)
->where('patiens.last_name','like','%'.$date.'%')
->orwhere('patiens.personal_id','like','%'.$date.'%')
->get();
基本上我需要我的查询来完成这个:
This...
->where('users.status','=','Inactive')
->orwhere('patiens.strikes','>=',3)
AND ALSO
->where('patiens.last_name','like','%'.$date.'%')
->orwhere('patiens.personal_id','like','%'.$date.'%')
基本上,首先提取 All Inactive
然后在该列表中查找所有匹配项
您可以在回调中嵌套条件:
$patients= DB::table('patiens')
->join('users','patiens.User_ID','=','users.id')
->where(function ($query) {
$query->where('users.status','=','Inactive')
->orwhere('patiens.strikes','>=',3);
})->where(function ($query) use ($date) {
$query->where('patiens.last_name','like','%'.$date.'%')
->orwhere('patiens.personal_id','like','%'.$date.'%');
})
->get();