Редактировать 2:
Ничего здесь не найти, моя неудача в другом месте.
Кто знал, что != NULL
не работает в MySQL.
Модератор удалите это пожалуйста?
У меня есть eav
база данных, в которой мне нужно выбрать некоторые продукты с атрибутами.
Когда я использую
select attribute1.value as a1, attribute2.value as a2, products.id
from attributes attribute1, attributes attribute2, products
where product.id = attribute1.product_id and attribute1.name = 'abc' and
product.id = attribute2.product_id and attribute2.name = 'def'
Я не получаю все товары, если для одного товара отсутствует атрибут, и мне нужно получить все товары с помощью NULL
, если отсутствуют атрибуты.
Когда я использую
select attribute1.value as a1, attribute2.value as a2, products.id
from products
left join attributes as attribute1 on (product.id = attribute1.product_id and attribute1.name = 'abc')
left join attributes as attribute2 on (product.id = attribute2.product_id and attribute2.name = 'def')
Я получаю все продукты, но у всех продуктов есть a1 = NULL
, даже если они отсутствуют в базе данных.
В чем проблема?
* * 1 022 Пример: * 1 023 *
продукты:
id
1000
1001
1002
1003
атрибуты:
name product_id value
abc 1000 1
abc 1002 2
def 1000 3
def 1001 4
Ожидаемый результат:
id a1 a2
1000 1 3
1001 NULL 4
1002 2 NULL
1003 NULL NULL
Результат первого запроса:
id a1 a2
1000 1 3
Результат второго запроса:
id a1 a2
1000 NULL 3
1001 NULL 4
1002 NULL NULL
1003 NULL NULL
EDIT:
Исправлен второй запрос и пример.