sql >> Database >  >> RDS >> PostgreSQL

Databasegegevens vinden die het beste passen bij de reacties van gebruikersvariabelen

U kunt de "enum"-waarde voor elke kolom samenvoegen. (Dat lijkt het belangrijkste te zijn dat je mist.)

In de WHERE clausule kunt u vervolgens filteren op de dingen die gelijk moeten zijn aan 'TRUE' .

Gebruik een ORDER BY voor de dingen die 'MAYBE' . zijn . Vergelijk ze met 'TRUE' en cast die vergelijking naar een integer . Tel de resultaten van die gegoten vergelijkingen op en sorteer op die som aflopend.

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;

Kanttekening:Postgres biedt zelf opsommingen als gegevenstypen. Je zou het schema van de zaaltafel kunnen wijzigen om deze te gebruiken, dan zijn de joins niet nodig.




  1. CodeIgniter update_batch zonder de vorige gegevens te vervangen, de volgende bijgewerkte waarde wordt door komma's gescheiden als increment

  2. MySQL:subquery's OF vakbonden?

  3. TSQL-bericht 1013 Gebruik correlatienamen om ze te onderscheiden.

  4. Wat is het verschil tussen de addlashes van PHP en mysql(i)_escape_string?