الاستعلام الخلية الإفراط في العديد من لكثير العلاقة

StackOverflow https://stackoverflow.com/questions/1202978

  •  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 نتيجة لذلك، فضلا عن ... أي أفكار؟

هل كانت مفيدة؟

نصائح أخرى

وهذا الهيكل الاستعلام يتجنب الحاجة إلى وجود بند واضح (شريطة ألا تكون هناك سجلات مكررة في الجدول القرار).

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 ) 
  )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top