从 Magento 1.9 数据库获取客户姓名、电子邮件和 phone 号码
Get customer names, emails and phone numbers from Magento 1.9 database
我有两个不同的 SQL 代码,一个用于获取用户名和电子邮件,另一个只是 phone 个数字。
你能帮忙把它与一个脚本结合起来,这样就可以获得用户名、电子邮件和 phone 号码的列表吗?
这是获取用户名和电子邮件的查询(来自@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
而这个仅用于 phone 个号码(@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
我的目标是获得以下 table 结构:
------------------------------------------------------
Full Name | Email Address | Phone Number
------------------------------------------------------
David Ros | david@email.com | 02-30493929
Joe Pratt | joe@email.com | 03-20392030
------------------------------------------------------
谢谢。
在这里,您可以在第一个查询中包含另外 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
以上回答仍然错误,客户实体id在customer_address_entity中是link而不是customer_address_varchar。
正确查询如下:
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
我有两个不同的 SQL 代码,一个用于获取用户名和电子邮件,另一个只是 phone 个数字。
你能帮忙把它与一个脚本结合起来,这样就可以获得用户名、电子邮件和 phone 号码的列表吗?
这是获取用户名和电子邮件的查询(来自@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
而这个仅用于 phone 个号码(@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
我的目标是获得以下 table 结构:
------------------------------------------------------
Full Name | Email Address | Phone Number
------------------------------------------------------
David Ros | david@email.com | 02-30493929
Joe Pratt | joe@email.com | 03-20392030
------------------------------------------------------
谢谢。
在这里,您可以在第一个查询中包含另外 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
以上回答仍然错误,客户实体id在customer_address_entity中是link而不是customer_address_varchar。
正确查询如下:
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