Я пытаюсь написать запрос SQL, который извлекает из 3 таблиц и не смог достичь нужных мне результатов. Я хочу вернуть все имена свойств (метки), которые связаны с определенной категорией, и сопоставить эти свойства со значениями определенного актива из указанной категории, которые могут не иметь значения для сопряжения с каждым свойством.
Я хочу все свойства категории 4 в сочетании со значениями актив 135 . Для актива 135 не заданы значения для свойства 3 или 4, поэтому я хочу:
| property_name | property_value |
|:--------------|:-------------------|
| Fixture ID | A5 |
| Manufacturer | Black & Decker |
| Model # | |
| Type | |
Вот мой запрос:
SELECT property.property_name, asset_property.property_value
FROM property
LEFT OUTER JOIN category_property
ON property.property_id = category_property.property_id
INNER JOIN asset_property
ON asset_property.property_id = property.property_id
WHERE category_property.category_id = 4
AND asset_property.asset_id = 135
результирующие данные :
| property_name | property_value |
|:--------------|:-------------------|
| Fixture ID | A5 |
| Manufacturer | Black & Decker |
В нем отсутствуют 2 свойства из-за моего AND asset_property.asset_id = 135
Вот таблицы :
* звездочка просто указывает строки из тестового примера.
таблица: свойство
| property_id | property_name |
|:-----------:|:--------------|
| 1 | Fixture ID |*
| 2 | Manufacturer |*
| 3 | Model # |*
| 4 | Type |*
| 5 | Lamp Type |
таблица: asset_property
Сопоставляет активы со значениями свойств.
| asset_id | property_id | property_value |
|:--------:|:-----------:|:---------------|
| 129 | 1 | A5 |
| 129 | 2 | Black & Decker |
| 129 | 3 | 1230-02 |
| 129 | 4 | Incandescent |
| 135 | 1 | E6 |*
| 135 | 2 | Linden |*
| 147 | 1 | G1 |
таблица: категория_свойства
пары категорий с его свойствами.
| category_id | property_id |
|:-----------:|:-----------:|
| 4 | 1 |*
| 4 | 2 |*
| 4 | 3 |*
| 4 | 4 |*
| 7 | 2 |
| 7 | 5 |
Я пробовал все разные типы JOIN, HAVING, GROUP BY .... не могу понять. Если кто-нибудь поймет, что мне нужно, я очень признателен за помощь! Спасибо!
Чтобы уточнить, мне нужно вернуть эти наборы результатов:
| property_name |
|:--------------|
| Fixture ID |
| Manufacturer |
| Model # |
| Type |
И
| property_value |
|:---------------|
| A5 |
| Black & Decker |
И присоединиться к ним на property_id
:
| property_name | property_value |
|:--------------|:---------------|
| Fixture ID | A5 |
| Manufacturer | Black & Decker |
| Model # |
| Type |
Но поскольку в asset_property table
нет записи для property_id
4 и 5, property_name
для этих свойств не отображается.
| property_name | property_value |
|:--------------|:---------------|
| Fixture ID | A5 |
| Manufacturer | Black & Decker |
Модель #
Тип
Я хочу, чтобы они были показаны. Я хочу, чтобы ALL имена свойств для категории 4 были возвращены и согласованы с любыми соответствующими значениями property_values для актива 135 .
Итак, для категории Фрукты Я хочу вернуть все имена свойств (Цвет, Сезон, Вкус). Свойство color для Apple не задано, но я все же хочу, чтобы все типы свойств были возвращены, чтобы их можно было изменить или заполнить:
| property_name | property_value |
|:--------------|:---------------|
| Color | |
| Season | Fall |
| Taste | Tart |