PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Mit PostgreSQL und Rails 3 eindeutige Datensätze finden, die nach Feldern geordnet sind?

Die Abfrage, nach der Sie suchen, sollte wie folgt aussehen:

SELECT user_id, min(created_at) AS min_created_at
FROM   cards
WHERE  company_id = 1
GROUP  BY user_id
ORDER  BY min(created_at)

Sie können sich in die Tabelle user eintragen wenn Sie Spalten dieser Tabelle im Ergebnis benötigen, sonst brauchen Sie sie nicht einmal für die Abfrage.
Wenn Sie min_created_at nicht benötigen im SELECT Liste, Sie können es einfach weglassen.

Sollte leicht in Ruby zu übersetzen sein (was ich nicht gut kann).

Um den gesamten Benutzerdatensatz abzurufen (wie ich Ihrem Kommentar entnehme):

SELECT u.*,
FROM   user u
JOIN  (
    SELECT user_id, min(created_at) AS min_created_at
    FROM   cards
    WHERE  company_id = 1
    GROUP  BY user_id
    ) c ON u.id = c.user_id
ORDER  BY min_created_at

Oder:

SELECT u.*
FROM   user u
JOIN   cards c ON u.id = c.user_id
WHERE  c.company_id = 1
GROUP  BY u.id, u.col1, u.col2, ..   -- You have to spell out all columns!
ORDER  BY min(c.created_at)

Mit PostgreSQL 9.1+ können Sie einfach schreiben:

GROUP  BY u.id

(wie in MySQL) .. bereitgestellte id ist der Primärschlüssel.

Ich zitiere die Versionshinweise :