私は3つのテーブルを持っています:
mobile_users
-id
、、phone_type
...
2+3。iphone_purchases
AND android_purchases
- id
、、、.. status
_user_id
2 回以上購入したすべてのユーザーを取得しようとしています。落札されたものは、 によって識別されstatus > 0
ます。mobile_users
また、同じクエリでテーブル内のユーザーの合計数を取得しようとしています。
これは私が思いついたクエリです:
SELECT COUNT(*) AS `users`,
( SELECT COUNT(*)
FROM `mobile_users`
) AS `total`
FROM `mobile_users`
WHERE `mobile_users`.`phone_type` = 'iphone'
AND ( SELECT COUNT(*)
FROM ( SELECT `status`,
`user_id`
FROM `iphone_purchases`
UNION
SELECT `status`,
`user_id`
FROM `android_purchases`
) AS `purchase_list`
WHERE `purchase_list`.`status` > 0
AND `purchase_list`.`user_id` = `mobile_users`.`id`
) >= 2
非常に遅いので、改善する方法を見つけなければなりません。どんな助けでも大歓迎です!
編集: また、PHP でサブクエリを使用してこのクエリを作成していることも考慮する必要があります。WHERE ステートメントにさらに条件を付けて構築しています。