对于我的问题,我有2张桌子
tb1名称案件
tb2名称呼叫
我必须选择Case,所有Calls包含状态('A','B')
例如:
案例A有3个电话
呼叫A.1具有状态A
呼叫A.2具有状态A
呼叫A.3具有状态B
案例B有3个电话
呼叫B.1具有状态A
呼叫B.2具有状态B
呼叫B.3具有状态C
因此,查询应返回案例A,因为在案例A中所有调用状态都在('A','B')
我的查询返回包含呼叫状态的所有案例记录,不仅包括A和B,还包括C.它不正确
select c.id
from cases c join calls ca on (ca.parent_id = c.id and ca.parent_type = 'Cases')
where c.status <> 'Closed'
and ca.status in ('A','B')
group by c.id
请问你能帮帮我吗?
谢谢,
可
答案 0 :(得分:0)
select cs.*
from cases cs
join calls cl on cl.caseId = cs.title and cl.status in ('A', 'B');
答案 1 :(得分:0)
你的问题不明确。尽管如此,我会尽力回答:
select b.calls from tb1 a, tb2 b where a.status in ('A', 'B');
答案 2 :(得分:0)
我使用此查询来选择所有调用都是A和B的案例
SELECT DISTINCT `cases`.id,cases.status,children.status
FROM (`cases`)
LEFT OUTER JOIN `calls` children
ON (`cases`.`id` = `children`.`parent_id`
AND `children`.`parent_type` = 'Cases')
GROUP BY `cases`.`id`
HAVING
SUM(CASE `children`.`status` WHEN 'C' THEN 1 ELSE 0 END) = 0
and SUM(CASE `children`.`status` WHEN 'D' THEN 1 ELSE 0 END) = 0
[已解决]有关详情,请参阅链接Link。