I just moved my website to a new server. The new server is using a much newer version of MySQL, and this is causing some problems with GROUP BY and ORDER BY. I am wondering if anybody could help me resolve this, since nothing I've tried seems to help.
My query looks like this:
SELECT ib_users.`id`
, ib_users.`name`
, ib_users.`surname`
, ib_users.`memberId`
, payment.`payment_date`
, payment.`pif`
, membership.`membership_date`
, membership.`type`
FROM `ib_users`
LEFT JOIN ( SELECT userid
, payment_date
, pif
FROM ( SELECT ib_membershipfees.`userid`
, ib_membershipfees.`fordate` `payment_date`
, ib_membershipfees.`pif`
FROM `ib_membershipfees`
ORDER BY payment_date DESC, added DESC
) vt
GROUP BY userid
) `payment`
ON payment.`userid` = ib_users.`id`
LEFT JOIN ( SELECT userid
, membership_date
, type
FROM ( SELECT ib_membership.`userid`
, ib_membership.`date` `membership_date`
, ib_membership.`type`
FROM `ib_membership`
ORDER BY membership_date DESC, added DESC
) vt
GROUP BY userid
) `membership`
ON membership.`userid` = ib_users.`id`
WHERE ib_users.`removed` = 'no'
The problem is here:
ORDER BY payment_date DESC, added DESC) vt
GROUP BY userid ) `payment` ON payment.`userid` = ib_users.`id`
The ordering is not working as it did before, causing it to returning the wrong row from ib_membershipfees since ORDER BY payment_date DESC is not being applied for some reason.
Does anybody know why this is not working anymore, and how I can work around it? Any help is very appreciated.