sql >> Database >  >> RDS >> PostgreSQL

Unieke records vinden, gerangschikt per veld in combinatie met PostgreSQL en Rails 3?

De zoekopdracht die u zoekt, zou er als volgt uit moeten zien:

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)

U kunt deelnemen aan de tabel user als je kolommen van die tabel in het resultaat nodig hebt, anders heb je het niet eens nodig voor de zoekopdracht.
Als je min_created_at niet nodig hebt in de SELECT lijst, je kunt hem gewoon weglaten.

Moet gemakkelijk te vertalen zijn naar Ruby (waar ik niet goed in ben).

Om het hele gebruikersrecord te krijgen (zoals ik afleid uit uw opmerking):

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

Of:

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)

Met PostgreSQL 9.1+ kunt u eenvoudig schrijven:

GROUP  BY u.id

(zoals in MySQL) .. verstrekt id is de primaire sleutel.

Ik citeer de release-opmerkingen :



  1. Hoe gegevens naar json-indeling in SQL Server 2008 te converteren?

  2. Hoe schrijf ik UTF-8-tekens met bulk insert in SQL Server?

  3. Gebruik OBJECTPROPERTY() om te bepalen of een object een weergave is in SQL Server

  4. Opmerking:niet-gedefinieerde variabele:db bij gebruik van PDO