Mamy następujące tabele w naszym systemieZapytanie o dopasowanie wielu wierszy?
Tabela obiekt
object_id object_description
1 "Car"
2 "Person"
Tabela atrybut
attribute_id attribute_name
1 "hair_color"
2 "height"
3 "number_of_doors"
4 "engine_size"
Tabela ATTRIBUTE_VALUE
attribute_id attribute_value_id value
1 1 "black"
1 2 "blonde"
2 1 "more than 1 meter"
2 2 "less than 1 meter"
3 1 "5 doors"
3 2 "3 doors"
4 1 "more than 1.9"
4 2 "less than 1.9"
Tabela object_attribute
object_id attribute_id attribute_value_id
1 3 1 -- Car, number of doors,5
1 3 2 -- Car, number of doors,2
1 4 1 -- Car, engine size, greater than 1.9
1 4 2 -- Car, engine size, less than 1.9
Dzięki tej strukturze jesteśmy o wiele problemy z obiektów, które pasują do wielu charakterystyczne (tj uzyskać wszystkie samochody z 3 drzwiami i pojemności silnika większej niż 1.9) Obecnie używamy przecina dla tej
SELECT OBJECT_ID
FROM object_attribute
WHERE attribute_id = 3
AND attribute_value = 2
INTERSECT
SELECT OBJECT_ID
FROM object_attribute
WHERE attribute_id = 4
AND attribute_value = 1
Istnieje zmierzających obiekty z numerem ró? nych atrybutów, więc nie możemy użyć stałego Liczba złączeń lub INTERSECTs już jest
Czy istnieje sposób generowania wielu kombinacji wszystkich atrybutów w "dynamiczny sposób"?
Co chcielibyśmy osiągnąć to dynamiczny zapytań, które buduje się widok takiego:
object_id | att_name_1 | att_value_1 | att_name_2 | att_value2 | att_name_n | attr_value_n
Ponieważ liczba atrybutów jest zmienna powinniśmy trigered i aktualizacja zapytania, gdy nowy obiekt jest wstawiony
Guys myślę, co mam na myśli nie jest to możliwe, więc prawdopodobnie będziemy iść z ta dynamiczna konstrukcja zapytania w środowisku wykonawczym. Dziękuję wszystkim za odpowiedzi
Czy możesz przekroczyć obiekt łączenia na atrybut i lewe dołączenie do wyników? A może potrzebujesz tylko atrybutów, które możesz wystartować z Object_Attribute i dołączyć do obu kolumn? – Liath
Czy RDBM's? Retag dla lepszej widoczności – Yaroslav
Musisz budować kwerendę dynamicznie, z odpowiednią ilością połączeń JOIN na nich. – Borik