私がやろうとしているのは、、、列id
をテーブルから引き出すことです。phone_type
os_version
Enswitch_Mobile_Users
enswitch_id
そして、IDを使用して、テーブルから取得する必要がありEnswitch_Users
ます。
その後、すべての全体をカウントするEnswitch_Android_Purchases
かEnswitch_Iphone_Purchases
、ユーザー列が id from に一致しenswitch_mobile_users
ます。最初のエントリ日と最後のエントリ日を取得します。
そして、私はこのクエリでそれを機能させることができました:
SELECT p.user AS `Mobile_User_ID`,
e.os_version `Os_Version`,
e.phone_type `Phone_Type`,
eu.enswitch_id `Enswitch_ID`,
Count(1) AS `Buy_Count`,
(SELECT pc.date
FROM
(
SELECT date, user, status
FROM enswitch_android_purchases
UNION
SELECT date, user, status
FROM enswitch_iphone_purchases
) AS pc
WHERE pc.status = 1
AND pc.user = p.user
ORDER BY pc.date ASC
LIMIT 1) AS `First_Purchase`,
(SELECT pc.date
FROM
(
SELECT date, user, status
FROM enswitch_android_purchases
UNION
SELECT date, user, status
FROM enswitch_iphone_purchases
) AS pc
WHERE pc.status = 1
AND pc.user = p.user
ORDER BY pc.date DESC LIMIT 1) AS `Last_Purchase`
FROM
(
SELECT item, date, user, status
FROM enswitch_android_purchases
UNION
SELECT item, date, user, status
FROM enswitch_iphone_purchases
) AS p
LEFT JOIN enswitch_mobile_users e
ON p.user = e.id
LEFT JOIN enswitch_users eu
ON e.user_id = eu.id
WHERE p.`date` >= :from_date
AND p.`date` <= :to_date
AND p.user is not null
AND p.status = 1
GROUP BY `Mobile_User_ID`
しかし、選択のために非常に遅くなるので、どうすればより効率的にすることができますか?