Sobes.tech
Middle

Kuidas SQL-is näidata iga kuulutuse kehtiv aadress ja hind?

sobes.tech AI

Vastus AI-lt

Et näidata SQL-is iga reklaami aktualse aadressi ja hinda, tuleb määratleda, mida tähendab "aktiivne" — tavaliselt on see viimane kirje kuupäeva või versiooni järgi iga reklaami puhul.

Oletame, et on tabel ads koos veergudega: ad_id, address, price, updated_at.

Näide päringust, mis iga reklaami jaoks valib kirje maksimaalse uuendamise kuupäevaga:

SELECT ad_id, address, price
FROM ads a
WHERE updated_at = (
    SELECT MAX(updated_at)
    FROM ads
    WHERE ad_id = a.ad_id
);

Kui andmebaas toetab aknafunktsioone, saab kasutada:

SELECT ad_id, address, price
FROM (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY ad_id ORDER BY updated_at DESC) as rn
    FROM ads
) sub
WHERE rn = 1;

See võimaldab saada iga reklaami kõige värskema aadressi ja hinna.