अगर मैं सही ढंग से समझता हूं तो आप परिणामों को अवरोही क्रम में मैचों की संख्या से क्रमबद्ध करना चाहते हैं। ऐसा करने के लिए, आप कोशिश कर सकते हैं:
SELECT movie
FROM genre_rel
WHERE genre IN (1, 8, 3)
GROUP BY movie
order by count(movie) desc
और यदि आप सभी मानदंडों से मेल खाने वाली फिल्में चाहते हैं, तो आप इसका उपयोग कर सकते हैं:
SELECT movie
FROM genre_rel
WHERE genre IN (1, 8, 3)
GROUP BY movie
HAVING count(movie) = 3
अद्यतन:
यह सबसे अच्छा है जो मैं MySQL में कर सकता हूं। आप IN का उपयोग नहीं कर सकते क्योंकि आप फ़िल्टर के क्रम के बारे में जानकारी नहीं निकाल सकते। यदि आप व्युत्पन्न तालिका को फ़िल्टरिंग के साधन के रूप में जोड़ते हैं, तो आप इस जानकारी को जोड़ सकते हैं और इसका उपयोग स्थितिगत मिलानों के परिणाम दिखाने के लिए कर सकते हैं। ध्यान दें कि आप शैली_रेल तालिका में कोई आदेश देने की जानकारी प्रदान नहीं करते हैं, इसलिए आप वास्तव में प्रति फिल्म शैलियों के महत्व को नहीं जानते हैं। यह क्वेरी आपको मानदंड में शैलियों के महत्व के अवरोही क्रम से मेल खाने वाली फिल्में देगी:
SELECT movie
FROM genre_rel
INNER join
(
select 1 genre, 1000 weight
union all
select 8, 100
union all
select 3, 10
) weights
on genre_rel.genre = weights.genre
GROUP BY movie
order by sum(weight) desc
ध्यान दें कि 5 को छोड़कर सभी फिल्में सभी 3 शैलियों की हैं। यदि आप शैली_रेल में महत्व के क्रम का प्रतिनिधित्व करने वाला एक कॉलम जोड़ते हैं तो आप कुछ गणित (वजन - महत्व या कुछ इसी तरह) तैयार कर सकते हैं।