mysql - 一个 mySQL 查询来检查一个选项,如果不是真的,另一个选项?
问题描述
我对 mySQL 很陌生。
我正在从表中查找某些记录,现在要求已经改变。起初,查询会提取在工作中被标记为船长的人的姓名以及其他一些条件。现在,如果没有队长,我的老板要我拉抄录员工作。如何在 mySQL 中执行此操作?
我的代码是:
$Q = $this->read_db->query('
select DISTINCT j.id, j.reference, max(ja.FinalDue) as FinalDue, j.clientdue, j.pagecount, t.name, ja.iscaptain
from `job` j
join `jobattachment` a on a.`jobid` = j.`id`
join `jobassignment` ja on a.`jobid` = ja.`jobid`
join `transcriber` t on ja.`transcriberid` = t.`id`
where ja.`iscaptain` = 1
and ja.`deleted` != 1
and (a.`editing` = 2 or a.`editing` = 3)
and a.`redline` != 0
and j.`complete` = 0
group by j.id');
return $Q->result_array();
如何让查询找到船长,只有在没有船长的情况下才找到ID在红线字段中的人?jobattachment 表中每个作业都有多条记录,如果附件被标记为红线,则抄写员的 ID 将在该字段中,否则将为空。
我尝试通过添加一个或来更改查询,但我不想要船长或转录员,如果没有船长,我只想要转录员。任何帮助将非常感激。
解决方案
我经常玩这个,这就是我想出的解决方案。感谢所有回复的人。
public function getRedlinesNotCompleted() {
$Q = $this->read_db->query('
select j.id, j.reference, max(ja.FinalDue) as FinalDue, j.clientdue, j.pagecount, t.name, max(ja.iscaptain) as iscaptain
from `job` j
join `jobattachment` a on a.`jobid` = j.`id`
join `jobassignment` ja on a.`jobid` = ja.`jobid`
join `transcriber` t on ja.`transcriberid` = t.`id`
where ja.`deleted` != 1
and (a.`editing` = 2 or a.`editing` = 3)
and a.`redline` != 0
and j.`complete` = 0
group by j.id');
return $Q->result_array();
}
public function getCaptainNameForRedlineJobsNotCompleted($jobid) {
$Q = $this->read_db->query('
SELECT t.name, max(j.iscaptain) as iscaptain
FROM jobassignment j
JOIN transcriber t ON t.id = j.transcriberid
WHERE j.jobid = ' . $jobid . ' AND j.iscaptain = 1');
return $Q->row()->name;
}
推荐阅读
- javascript - 加载后如何进行聊天更新?
- android - 使用 FragmentScenario 测试片段时如何测试与菜单的交互
- python-3.x - pandas read_CSV 空列被视为 NaN?
- three.js - 如何在three.js中的z轴上重复纹理?
- java - 使用 servlet 从 mysql 检索数据的空指针异常
- php - 如何进行时间检查
- c# - 如何使用 2 个值作为范围搜索数组中的值以找到第一个值?
- vba - 通过 Visio VBA 中的“偏移”函数选择新生成的形状
- java - 如何找到 8-puzzle 的所有可能状态?
- ubuntu-18.04 - Ubuntu 错误:apt-aget update intel-mkl 分发错误