基本的に、私の 0 OR 0 は 1 を返しています - それは本当に私が望んでいたものではありません :) 0 OR 0 を選択すると 0 になるので、その理由はよくわかりません..
これは、is_premium_dealer が bool ではなく enum('0','1') であるためだと思います (理由は聞かないでください。私はこのデータベースを設計していません!)
これが ENUM によるものかどうかは誰にもわかりません。
前もって感謝します!ジョン。
SELECT is_premium_dealer, company_name,
(SELECT COUNT(*) FROM adverts WHERE user_id = users.id AND is_archived = 0) AS innerquery,
((SELECT COUNT(*) FROM adverts WHERE user_id = users.id AND is_archived = 0 AND is_deleted = 0) > 0 OR is_premium_dealer = 1) AS logicissue
FROM `user_profiles_dealers`
LEFT JOIN `users` ON user_profiles_dealers.user_id = users.id
LEFT JOIN `counties` ON user_profiles_dealers.county_id = counties.id
LEFT JOIN `countries` ON user_profiles_dealers.country_id = countries.id
WHERE (users.is_active=1)
AND (((SELECT COUNT(*) FROM adverts WHERE user_id = users.id AND is_archived = 0 AND is_deleted = 0) > 0) OR is_premium_dealer > 0)
AND company_name like '%autocraft%' limit 5\G
結果:
*************************** 1. row ***************************
is_premium_dealer: 0
company_name: A Company
innerquery: 0
logicissue: 1
1 row in set (0.00 sec)