MySQL inner join - wybieranie tylko jeden wiersza z drugiej tabeli

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

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.