यह आपको वह प्राप्त करना चाहिए जो आपको चाहिए... प्रत्येक "OR" d जहां क्लॉज की स्थिति है, आप केवल एक योग्य आइटम के रूप में जोड़ना जारी रख सकते हैं। फिर, बस "होने" खंड को समायोजित करें ताकि आप जिस मानदंड की अनुमति दे रहे हैं, उसी संख्या को पूरा कर सकें ... . सुनिश्चित करें कि आपके पास "VALUE" कॉलम पर संबंध तालिका पर एक अनुक्रमणिका है।
SELECT STRAIGHT_JOIN
rel.id_obj
from
relations rel
join attributes atr
on rel.id_addr = atr.id
where
( rel.value = 'Apartment' AND atr.name = 'Type' )
or ( rel.value = 'Some City' AND atr.name = 'City' )
group by
atr.id_obj
having
count(*) = 2
limit
0, 20
यदि आप इस परिणाम से सभी वास्तविक वस्तु डेटा चाहते हैं, तो आप इसे कुछ इस तरह लपेटेंगे...
select obj.*
from
( complete SQL statement above ) PreQuery
join Object obj on PreQuery.id_obj = obj.id