MySQL заявление о союзе - PullRequest
       19

MySQL заявление о союзе

0 голосов
/ 25 ноября 2011

Может кто-нибудь увидеть очевидную проблему с этим, потому что я не могу.

Следующее не дает строк.Даже если я оставлю WHERE attribute_id LIKE @aid AND value LIKE @oid; и использую SELECT * FROM, ничего не будет возвращено

SELECT @aid:=a.attribute_id,@oid:=v.option_id FROM eav_attribute_option  AS o
JOIN eav_attribute_option_value AS v ON o.option_id = v.option_id
JOIN eav_attribute AS a ON o.attribute_id = a.attribute_id
WHERE v.value LIKE 'aoc'
AND a.attribute_code = 'brand';

SELECT DISTINCT entity_id
FROM ( 
 SELECT entity_id,attribute_id,value FROM `catalog_product_entity_datetime`
 UNION DISTINCT
 SELECT entity_id,attribute_id,value FROM `catalog_product_entity_decimal`
 UNION DISTINCT
 SELECT entity_id,attribute_id,value FROM `catalog_product_entity_gallery`
 UNION DISTINCT
 SELECT entity_id,attribute_id,value FROM `catalog_product_entity_int`
 UNION DISTINCT
 SELECT entity_id,attribute_id,value FROM `catalog_product_entity_media_gallery`
 UNION DISTINCT
 SELECT entity_id,attribute_id,value FROM `catalog_product_entity_text`
 UNION DISTINCT
 SELECT entity_id,attribute_id,value FROM `catalog_product_entity_varchar`
) AS tbl
WHERE attribute_id LIKE @aid AND value LIKE @oid;

Если я помещу производную таблицу за пределы круглых скобок, я получу 5 возвращенных строк.Таким образом, следующее работает

SELECT @aid:=a.attribute_id,@oid:=v.option_id FROM eav_attribute_option  AS o
JOIN eav_attribute_option_value AS v ON o.option_id = v.option_id
JOIN eav_attribute AS a ON o.attribute_id = a.attribute_id
WHERE v.value LIKE 'aoc'
AND a.attribute_code = 'brand';

SELECT entity_id FROM `catalog_product_entity_datetime` WHERE attribute_id = @aid AND value = @oid
UNION DISTINCT
SELECT entity_id FROM `catalog_product_entity_decimal` WHERE attribute_id = @aid AND value = @oid
UNION DISTINCT
SELECT entity_id FROM `catalog_product_entity_gallery` WHERE attribute_id = @aid AND value = @oid
UNION DISTINCT
SELECT entity_id FROM `catalog_product_entity_int` WHERE attribute_id = @aid AND value = @oid
UNION DISTINCT
SELECT entity_id FROM `catalog_product_entity_media_gallery` WHERE attribute_id = @aid AND value = @oid
UNION DISTINCT
SELECT entity_id FROM `catalog_product_entity_text` WHERE attribute_id = @aid AND value = @oid
UNION DISTINCT
SELECT entity_id FROM `catalog_product_entity_varchar` WHERE attribute_id = @aid AND value = @oid

, но это не кажется хорошим способом сделать это.

...