आप प्रत्येक कॉलम के लिए "enum" मान में शामिल हो सकते हैं। (ऐसा लगता है कि मुख्य चीज आपको याद आ रही है।)
WHERE
. में क्लॉज आप फिर उन चीजों के लिए फ़िल्टर कर सकते हैं जो 'TRUE'
. के बराबर होनी चाहिए ।
ORDER BY
. का प्रयोग करें उन चीज़ों के लिए जो 'MAYBE'
. हैं . उनकी तुलना 'TRUE'
. से करें और उस तुलना को integer
. से कास्ट करें . उस डाली गई तुलना के परिणामों का योग करें और उस योग के अवरोही क्रम से क्रमित करें।
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;
साइड नोट:पोस्टग्रेस डेटा प्रकार के रूप में ही एनम प्रदान करता है। आप इनका उपयोग करने के लिए स्थल तालिका के स्कीमा को बदल सकते हैं, फिर जुड़ने की आवश्यकता नहीं होगी।