mySQL 引用 WHERE 子句中的别名(EAV 模型)
mySQL refer to alias in WHERE clause (EAV Model)
我有以下 mySQL 查询,基本上搜索名称中包含 'rawganic' 的所有产品。
它看起来很乱,因为 Magento 使用实体-属性-值模型,这非常令人困惑,所以我有很多 select 查询来提取数据(我相信可能有更好的方法).
SELECT entity_id As eID, value as PName,
(SELECT value from catalog_product_entity_varchar WHERE attribute_id = 152 and entity_id = eID) as Size,
(SELECT sku from catalog_product_entity WHERE entity_id = eID) as SKU,
(SELECT type_id from catalog_product_entity WHERE entity_id = eID) as Type,
(SELECT value from catalog_product_entity_decimal WHERE attribute_id = 75 and entity_id = eID) as RRP,
(SELECT value from catalog_product_entity_int WHERE attribute_id = 96 and entity_id = eID) as Status
FROM catalog_product_entity_varchar
WHERE (attribute_id = 71 and value like '%rawganic%')
结果是:
这很好,除了现在我想添加另一个 WHERE 子句,其中类型必须是 'simple' 并且状态是“1”。
SELECT 查询引用别名 'eID' 但是我不能在 WHERE 子句中使用它。如何添加这些额外的 WHERE 子句?
您可以使用 HAVING:
SELECT entity_id As eID, value as PName,
(SELECT value from catalog_product_entity_varchar WHERE attribute_id = 152 and entity_id = eID) as Size,
(SELECT sku from catalog_product_entity WHERE entity_id = eID) as SKU,
(SELECT type_id from catalog_product_entity WHERE entity_id = eID) as Type,
(SELECT value from catalog_product_entity_decimal WHERE attribute_id = 75 and entity_id = eID) as RRP,
(SELECT value from catalog_product_entity_int WHERE attribute_id = 96 and entity_id = eID) as Status
FROM catalog_product_entity_varchar
WHERE (attribute_id = 71 and value like '%rawganic%')
HAVING Type = 'Simple' AND Status = 1
我有以下 mySQL 查询,基本上搜索名称中包含 'rawganic' 的所有产品。
它看起来很乱,因为 Magento 使用实体-属性-值模型,这非常令人困惑,所以我有很多 select 查询来提取数据(我相信可能有更好的方法).
SELECT entity_id As eID, value as PName,
(SELECT value from catalog_product_entity_varchar WHERE attribute_id = 152 and entity_id = eID) as Size,
(SELECT sku from catalog_product_entity WHERE entity_id = eID) as SKU,
(SELECT type_id from catalog_product_entity WHERE entity_id = eID) as Type,
(SELECT value from catalog_product_entity_decimal WHERE attribute_id = 75 and entity_id = eID) as RRP,
(SELECT value from catalog_product_entity_int WHERE attribute_id = 96 and entity_id = eID) as Status
FROM catalog_product_entity_varchar
WHERE (attribute_id = 71 and value like '%rawganic%')
结果是:
这很好,除了现在我想添加另一个 WHERE 子句,其中类型必须是 'simple' 并且状态是“1”。
SELECT 查询引用别名 'eID' 但是我不能在 WHERE 子句中使用它。如何添加这些额外的 WHERE 子句?
您可以使用 HAVING:
SELECT entity_id As eID, value as PName,
(SELECT value from catalog_product_entity_varchar WHERE attribute_id = 152 and entity_id = eID) as Size,
(SELECT sku from catalog_product_entity WHERE entity_id = eID) as SKU,
(SELECT type_id from catalog_product_entity WHERE entity_id = eID) as Type,
(SELECT value from catalog_product_entity_decimal WHERE attribute_id = 75 and entity_id = eID) as RRP,
(SELECT value from catalog_product_entity_int WHERE attribute_id = 96 and entity_id = eID) as Status
FROM catalog_product_entity_varchar
WHERE (attribute_id = 71 and value like '%rawganic%')
HAVING Type = 'Simple' AND Status = 1