次の5つのテーブルがあります。
company type branch company_type company_branch
------- ---- ------ ------------- --------------
c_id t_id b_id c_id | t_id c_id | b_id
---- --- ---- ----------- --------------
1 1 1 1 1 1 1
2 2 2 1 2 1 2
3 3 2 1 2 1
2 3 2 3
次の 2 つのクエリは正常に機能します。
SELECT DISTINCT `co`.`c_id`
FROM (`company` co)
JOIN `company_type` t ON `t`.`c_id` = `co`.`c_id`
WHERE `co`.`status` = 1
GROUP BY `co`.`c_id`
HAVING sum(if(`t`.`t_id` in (1,2),1,0)) = 2 (---> returns 1 ) Correct !
SELECT DISTINCT `co`.`c_id`
FROM (`company` co)
JOIN `company_branch` b ON `b`.`c_id` = `co`.`id`
WHERE `co`.`status` = 1
GROUP BY `co`.`id`
HAVING sum(if(`b`.`b_id` in (1,2),1,0)) = 2 (---> returns 1 ) Correct !
しかし、次のようにそれらを結合しようとすると、空の結果が得られます。
SELECT DISTINCT `co`.`c_id`
FROM (`company` co)
JOIN `company_branch` b ON `b`.`c_id` = `co`.`id`
JOIN `company_type` t ON `t`.`c_id` = `co`.`id`
WHERE `co`.`status` = 1
GROUP BY `co`.`id`
HAVING sum(if(`b`.`b_id` in (1,2),1,0)) = 2 AND sum(if(`t`.`t_id` in (1,2),1,0)) = 2
私の推測では、2 つの条件の間の AND が原因です。誰かが手がかりを持っていますか?? または回避策?
期待される結果: 1