我有两个不同的SQL代码,一个用于获取用户名和电子邮件,另一个用于电话号码。
您能帮忙将它与一个脚本合并,以便获取用户名,电子邮件和电话号码列表吗?
以下是获取用户名和电子邮件的问题(由@Steve Robbins提供):
select ce.entity_id, concat(cevf.value, ' ', cevl.value) fullname, ce.email
from customer_entity ce
inner join customer_entity_varchar cevf
on ce.entity_id = cevf.entity_id
inner join eav_attribute eaf
on eaf.attribute_id = cevf.attribute_id
inner join customer_entity_varchar cevl
on ce.entity_id = cevl.entity_id
inner join eav_attribute eal
on eal.attribute_id = cevl.attribute_id
inner join eav_entity_type eet
on eet.entity_type_id = eal.entity_type_id = eaf.entity_type_id
where
eet.entity_type_code = 'customer'
and eaf.attribute_code = 'firstname'
and eal.attribute_code = 'lastname'
order by ce.entity_id
这只用于电话号码(@ zaka47):
select customer_address_entity_varchar.value from customer_address_entity_varchar
left join customer_entity on customer_entity.entity_id = "your_customer_id"
left join customer_address_entity on customer_address_entity.parent_id = customer_entity.entity_id
join eav_attribute on eav_attribute.attribute_code="telephone"
where customer_address_entity_varchar.attribute_id = eav_attribute.attribute_id
我的目标是获得以下表结构:
------------------------------------------------------
Full Name | Email Address | Phone Number
------------------------------------------------------
David Ros | david@email.com | 02-30493929
Joe Pratt | joe@email.com | 03-20392030
------------------------------------------------------
感谢。
答案 0 :(得分:1)
上面的答案仍然是错误的,客户实体ID是在customer_address_entity中的链接,而不是customer_address_varchar。
Corrent查询如下:
select ce.entity_id,
concat(cevf.value, ' ', cevl.value) fullname,
ce.email,
caev.value telephone from customer_entity ce
inner join customer_entity_varchar cevf
on ce.entity_id = cevf.entity_id
inner join eav_attribute eaf
on eaf.attribute_id = cevf.attribute_id
inner join customer_entity_varchar cevl
on ce.entity_id = cevl.entity_id
inner join eav_attribute eal
on eal.attribute_id = cevl.attribute_id
inner join eav_entity_type eet
on eet.entity_type_id = eal.entity_type_id = eaf.entity_type_id
inner join customer_address_entity cae
on cae.parent_id = ce.entity_id
inner join customer_address_entity_varchar caev
on cae.entity_id = caev.entity_id
inner join eav_attribute eat
on caev.attribute_id = eat.attribute_id
where
eet.entity_type_code = 'customer'
and eaf.attribute_code = 'firstname'
and eal.attribute_code = 'lastname'
and eat.attribute_code='telephone'
order by ce.entity_id desc limit 1
答案 1 :(得分:0)
在这里,您在第一个查询中包含2个以上的连接(customer_address_entity_varchar和eav_attribute)以获取属性电话
select ce.entity_id,
concat(cevf.value, ' ', cevl.value) fullname,
ce.email,
caev.value telephone
from customer_entity ce
inner join customer_entity_varchar cevf
on ce.entity_id = cevf.entity_id
inner join eav_attribute eaf
on eaf.attribute_id = cevf.attribute_id
inner join customer_entity_varchar cevl
on ce.entity_id = cevl.entity_id
inner join eav_attribute eal
on eal.attribute_id = cevl.attribute_id
inner join eav_entity_type eet
on eet.entity_type_id = eal.entity_type_id = eaf.entity_type_id
inner join customer_address_entity_varchar caev
on ce.entity_id = caev.entity_id
inner join eav_attribute eat
on caev.attribute_id = eat.attribute_id
where
eet.entity_type_code = 'customer'
and eaf.attribute_code = 'firstname'
and eal.attribute_code = 'lastname'
and eat.attribute_code='telephone'
order by ce.entity_id