私は次のSQLコードを持っています。
SELECT a.*, b.maxDate as last_payment_date, c.package as payment_for_package, (SELECT COUNT(id) FROM uploads WHERE user = a.id) AS upload_count
FROM users a
INNER JOIN payments c
ON a.id = c.user_id
INNER JOIN
(
SELECT user_id, MAX(date) maxDate, period
FROM payments
GROUP BY user_id
) b ON c.user_id = b.user_id AND
c.date = b.maxDate
WHERE a.package = 1
AND b.maxDate < $twomonths
AND (SELECT COUNT(id) FROM uploads WHERE user = a.id) > 10
AND b.period = 1
ORDER BY b.maxDate ASC
LIMIT 50
ご覧のとおり、ネストされたステートメントを(SELECT COUNT(id) FROM uploads WHERE user = a.id)
2回使用していますが、パフォーマンスを向上させるためにこのステートメントを再利用する方法があるかどうか疑問に思っていました。エイリアスを使用してみましたが、句upload_count
で「エイリアス」を使用できません。WHERE
ヘルプに感謝します