Cześć,
Mam tabelę użytkowników users
i tabelę płatności payments
dla każdego użytkownika, użytkownicy którzy ma jakąś "płatność" mogą mieć wiele powiązanych płatności w tabeli payments
. Chciałbym wybrać wszystkich użytkowników, którzy mają jakąkolwiek płatność, ale tylko tą najnowszą. Próbowałem to zrobić, ale nigdy wcześniej nie używałem zagnieżdżonych instrukcji, nie wiem więc co robię źle?
przykład:
SELECT u.*
FROM users AS u
INNER JOIN (
SELECT p.*
FROM payments AS p
ORDER BY date DESC
LIMIT 1
)
ON p.user_id = u.id
WHERE u.package = 1
Będę wdzięczny za jakąkolwiek pomoc! Pozdrawiam
1 odpowiedź
Musisz mieć podkwerendę, aby uzyskać ich najnowszą datę według id user
SELECT a.*, c.*
FROM users a
INNER JOIN payments c
ON a.id = c.user_ID
INNER JOIN
(
SELECT user_ID, MAX(date) maxDate
FROM payments
GROUP BY user_ID
) b ON c.user_ID = b.user_ID AND
c.date = b.maxDate
WHERE a.package = 1