PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Znajdowanie danych w bazie danych, które najlepiej pasują do zmiennych odpowiedzi użytkownika

Możesz dołączyć do wartości „enum” dla każdej kolumny. (To wydaje się być główną rzeczą, której brakuje.)

W WHERE klauzulę możesz następnie filtrować pod kątem rzeczy, które muszą być równe 'TRUE' .

Użyj ORDER BY dla rzeczy, które są 'MAYBE' . Porównaj je z 'TRUE' i rzutuj to porównanie na integer . Zsumuj wyniki tych rzutowanych porównań i posortuj według tej sumy malejąco.

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;

Uwaga dodatkowa:Postgres oferuje same wyliczenia jako typy danych. Możesz zmienić schemat tabeli miejsca spotkań, aby z nich korzystać, wtedy łączenia nie byłyby konieczne.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy Core CREATE TEMPORARY TABLE AS

  2. Grupuj według określonej kolumny w PostgreSQL

  3. Uzyskaj numer tygodnia z daty w PostgreSQL

  4. Jak przekonwertować znacznik czasu na liczbę całkowitą (epoka Uniksa) w Postgresie

  5. Jak mogę wysłać żądanie http z funkcji lub wyzwalacza postgresql?