Új hozzászólás Aktív témák

  • nyunyu
    félisten

    Hali,

    Az alábbi problémával szembesültem amit egyelőre nem sikerült megoldani. Postgres alatt adott két tábla, Users (id, customer_id) és Subscriptions (customer, status, created). Egy userhez nulla vagy több subscription is tartozhat (customer - customer_id kapcsolat). Az lenne a célom, hogy minden userhez lekérjem a legfrissebb subscription statuszát (created alapján, ha nincs, akkor null). Mi lenne erre a legegyszerűbb megoldás?

    select u.*, s.status
    from users u
    left join (
    select x.*,
    row_number() over (partition by customer_id order by created desc) rn
    from subscription x
    ) s
    on s.customer_id = u.customer_id
    and s.rn = 1;

    Beszámozod a subscription táblát ügyfelenkénti létrehozási dátum szerint csökkenőbe, aztán ebből joinolod az első rekordot az usershez.

    (Nem szeretek alquerykben group by-jal bohóckodni, mert úgy sokkal hosszabb+bonyolultabb+olvashatatlanabb lenne a kód.)

Új hozzászólás Aktív témák