الاستعلام الخلية الإفراط في العديد من لكثير العلاقة
-
05-07-2019 - |
سؤال
وهناك مثال بسيط جدا لن: العلاقة م الذي يحيرني. دعونا نفترض لدينا جدولين "النباتية" و "سمة" وجدول آخر بينهما عقد علاقتها مع هوياتهم:
Plant--------hasAttribute--------Attribute
P1 | A1
P1 | A2
P1 | A3
P2 | A1
P2 | A2
P3 | A2
P3 | A3
وهكذا، مصنع 1 ديه سمات 1،2 و 3. مصنع 2 ديها سمات 1 و 2 و 3 مصنع لديها سمات 2 و 3. الآن، في استعلام واحد، كيف يمكنني الحصول على مثل جميع النباتات التي لديها المهاراة 2 و 3؟ والنتيجة يجب أن تعود P1 و P3 لديهما سمات 2 و 3. كنت أحاول الاتحاد ولكن هذا سوف تعطيني P2 نتيجة لذلك، فضلا عن ... أي أفكار؟
المحلول
الاستعلام SQL التي تعطي النتائج المتميزة التي تتطابق مع أعمدة متعددة
وهذا هو ما كنت تبحث عنه؟
نصائح أخرى
وهذا الهيكل الاستعلام يتجنب الحاجة إلى وجود بند واضح (شريطة ألا تكون هناك سجلات مكررة في الجدول القرار).
SELECT p.PlantID
FROM
Plant p INNER JOIN PlantAttribute pa
ON p.PlantID = pa.PlantID AND pa.AttributeID = 1
INNER JOIN PlantAttribute pa2
ON p.PlantID = pa2.PlantID AND pa2.AttributeID = 2;
select * from Plants p where 2 = (
select count(*) from HasPlants h
where h.pid = p.id and h.aid in ( a2, a3 )
)
لا تنتمي إلى StackOverflow