PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Menemukan catatan unik, diurutkan berdasarkan bidang terkait, dengan PostgreSQL dan Rails 3?

Kueri yang Anda cari akan terlihat seperti ini:

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)

Anda dapat bergabung di tabel user jika Anda membutuhkan kolom tabel itu dalam hasil, jika tidak, Anda bahkan tidak memerlukannya untuk kueri.
Jika Anda tidak memerlukan min_created_at di SELECT daftar, Anda bisa meninggalkannya.

Seharusnya mudah untuk menerjemahkan ke Ruby (yang saya tidak pandai).

Untuk mendapatkan seluruh catatan pengguna (seperti yang saya dapatkan dari komentar Anda):

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

Atau:

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)

Dengan PostgreSQL 9.1+ Anda cukup menulis:

GROUP  BY u.id

(seperti di MySQL) .. disediakan id adalah kunci utama.

Saya mengutip catatan rilis :



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di psql bagaimana menjalankan Loop untuk kueri Select dengan CTE dan mendapatkan output yang ditampilkan jika saya menjalankannya dalam read-only db?

  2. Mengakses Postgres RDS dari cluster Kubernetes di AWS

  3. Cara mencari di bidang json yang berisi array objek dengan Eloquent

  4. Migrasi dari MSSQL ke PostgreSQL - Yang Harus Anda Ketahui

  5. Kesulitan Mengakses DB Postgres Jarak Jauh di Heroku dari Aplikasi Web Node.js Lokal