У меня есть три таблицы:
| items
--------
id
quantity
size_attribute_value_id
color_attribute_value_id
type_attribute_value_id
| attribute_values (instance of an attribute, like red, xsmall)
--------
id
attribute_id
name
| attributes (attribute category, like color, size)
id
name
Любая комбинация из трех атрибутов (размер, цвет, тип) может сделать допустимый элемент. Поэтому я хочу иметь возможность запрашивать все комбинации трех атрибутов, а также включать уже существующие элементы из таблицы элементов. Идея заключается в том, что я хочу получить набор результатов всех существующих элементов и всех возможных допустимых будущих элементов. Например, даже если таблица предметов полностью пуста, я все равно должен получить результаты несуществующих, но допустимых предметов с количеством 0.
Допустимые значения атрибута: 1, 2, 4.
В качестве начала я попробовал следующее правое соединение:
SELECT i.*, av1.*, av2.*, av3.*
FROM items i
RIGHT OUTER JOIN attribute_values av1 ON av1.attribute_id = 2 AND av1.id = i.size_attribute_value_id
RIGHT OUTER JOIN attribute_values av2 ON av2.attribute_id = 4 AND av2.id = i.color_attribute_value_id
RIGHT OUTER JOIN attribute_values av3 ON av3.attribute_id = 1 AND av3.id = i.type_attribute_value_id;
Но он возвращает только около 200 строк, когда их должно быть больше 1000.
Любая помощь, даже если это только точка в правильном направлении, приветствуется.