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

Menemukan data database yang paling sesuai dengan respons variabel pengguna

Anda dapat menggabungkan nilai "enum" untuk setiap kolom. (Sepertinya itu hal utama yang Anda lewatkan.)

Dalam WHERE klausa Anda kemudian dapat memfilter untuk hal-hal yang harus sama dengan 'TRUE' .

Gunakan ORDER BY untuk hal-hal yang 'MAYBE' . Bandingkan dengan 'TRUE' dan berikan perbandingan itu ke integer . Jumlahkan hasil perbandingan yang dicor dan urutkan berdasarkan jumlah itu secara menurun.

SELECT v.venue_name
       FROM venue_table v
            INNER JOIN response_enum_table rp
                       ON rp.id = v.parking
            INNER JOIN response_enum_table rd
                       ON rd.id = v.decorations
            INNER JOIN response_enum_table rh
                       ON rh.id = v.hotel
         -- INNER JOIN response_enum_table rx
         --            ON rx.id = v.x
         -- INNER JOIN response_enum_table ry
         --            ON ry.id = v.y
         -- ...
       WHERE rh.value = 'TRUE'
          -- AND rx.value = 'TRUE'
          -- ...
       ORDER BY (rp.value = 'TRUE')::integer
             -- + (ry.value = 'TRUE')::integer
             -- ...
                DESC;

Catatan tambahan:Postgres menawarkan enum sebagai tipe data itu sendiri. Anda dapat mengubah skema tabel venue untuk menggunakan ini, maka penggabungan tidak diperlukan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai Default dalam kolom saat menyisipkan baris baru

  2. Postgres COPY TO / FROM A FILE sebagai non superuser

  3. Penyelaman Mendalam Vendor Cloud:PostgreSQL di AWS Aurora

  4. Bisakah saya menetapkan (dalam dbase) batas ukuran pada bidang byte di PostgreSQL?

  5. Rel semua pengguna dalam grup dengan jenis kelamin laki-laki