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

Gabungkan satu kolom dalam kueri dengan banyak kolom

Kueri sederhana

Ini bisa lebih sederhana dengan PostgreSQL 9.1 atau lebih baru . Seperti yang dijelaskan dalam jawaban yang terkait erat ini:

  • PGError:ERROR:agregat tidak diizinkan dalam klausa WHERE pada kueri AR dari suatu objek dan objeknya memiliki_banyak

Cukup GROUP BY kunci utama dari sebuah meja. Sejak:

foo1 adalah kunci utama

.. Anda dapat menyederhanakan contoh Anda menjadi:

SELECT foo1, foo2, foo3, foo4, foo5, foo6, string_agg(aggregated_field, ', ')
FROM   tbl1
GROUP  BY 1
ORDER  BY foo7, foo8;  -- have to be spelled out, since not in select list!

Kueri dengan banyak tabel

Namun, karena Anda memiliki:

lebih banyak bidang dan GABUNG KIRI, bagian yang penting adalah bahwa semua bidang ini memiliki hubungan 1 hingga 1 atau 1 hingga 0 kecuali satu bidang yaitu 1 hingga n yang ingin saya gabungkan

.. seharusnya lebih cepat dan lebih mudah untuk menggabungkan dulu, bergabung nanti :

SELECT t1.foo1, t1.foo2, ...
     , t2.bar1, t2.bar2, ...
     , a.aggregated_col 
FROM   tbl1 t1
LEFT   JOIN tbl2 t2 ON ...
...
LEFT   JOIN (
   SELECT some_id, string_agg(agg_col, ', ') AS aggregated_col
   FROM   agg_tbl a ON ...
   GROUP  BY some_id
   ) a ON a.some_id = ?.some_id
ORDER  BY ...

Dengan cara ini sebagian besar kueri Anda tidak memerlukan agregasi sama sekali.

Saya baru-baru ini memberikan kasus uji dalam SQL Fiddle untuk membuktikan maksudnya dalam jawaban terkait ini:

  • PostgreSQL - urutkan menurut larik

Karena Anda mengacu pada jawaban terkait ini:Tidak, DISTINCT tidak akan membantu sama sekali dalam kasus ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kendala tumpang tindih tanggal postgres

  2. LEAST() Fungsi di PostgreSQL

  3. Pilih baris yang tidak terkunci di Postgresql

  4. PostgreSQL -harus muncul di klausa GROUP BY atau digunakan dalam fungsi agregat

  5. Bagaimana cara menghindari karakter tanda tanya (?) dengan Spring JpaRepository