catalog_product_entity
表
catalog_product_relation
表
catalog_product_entity_varchar
表
我想从上表中导出sku和url:
sku
位于catalog_product_entity
表格中。url
位于catalog_product_relation
表中。 我尝试连接这三个表,如果catalog_product_entity表entity_id与child_id
中的catalog_product_relation
列匹配,则选择url值,然后在where子句中使用parent_id,使用entity_id;
select cpe.sku
, value
from catalog_product_entity as cpe
left join
catalog_product_entity_varchar as cpev
on cpe.entity_id = cpev.entity_id
where cpev.attribute_id = 119 and
type_id = "simple" and
cpev.store_id=0 and
cpev.entity_id =
(
select parent_id
from catalog_product_relation
where child_id = cpe.entity_id
)
以上查询不是我在此处上传的正确查询以供理解
修改
catalog_product_entity_varchar taables标题
答案 0 :(得分:1)
您可以join
两次,一次直接,一次通过中间父子表。当找不到父值时,使用coalesce
回退到子值:
select cpe.sku
, coalesce(parent_cpev.value, child_cpev.value)
from catalog_product_entity as cpe
left join
catalog_product_entity_varchar as child_cpev
on child_cpev.entity_id = cpe.entity_id
and child_cpev.attribute_id = 119
and child_cpev.store_id = 0
left join
catalog_product_relation as cpr
on cpe.entity_id = cpr.child_id
left join
catalog_product_entity_varchar as parent_cpev
on parent_cpev.entity_id = cpr.parent_id
and parent_cpev.attribute_id = 119
and parent_cpev.store_id = 0
where cpe.type_id = 'simple'
答案 1 :(得分:0)
type_id列没有在您的查询中指定的(缺少的)表别名前缀。