出于某种原因,我无法从我的phpList(版本3.0.6)管理页面导出订阅者表。我在网上搜索过,其他几个人都遇到了这个问题,但没有发布变通办法。作为一种解决方法,我想直接查询mySQL数据库以检索类似的订户表。但我需要SQL命令的帮助。请注意,我不想导出或备份mySQL数据库,我想以与“导出订阅者”按钮应该在phpList管理页面中执行的相同方式查询它。
简而言之,我有两个表要查询。第一个表user
包含每个订阅者的ID和电子邮件。例如:
id | email
1 | e1@gmail.com
2 | e2@gmail.com
第二个表user_attribute
包含userid,attributeid和value。请注意,在下面的示例中,userid 1具有所有三个可能属性的值,而userid的2和3要么缺少三个属性ID中的一个或多个,要么有一些空值。
userid | attributeid | value
1 | 1 | 1
1 | 2 | 4
1 | 3 | 6
2 | 1 | 3
2 | 3 |
3 | 1 | 4
我想执行一个SQL语句,它会为每个看起来像这样的id / email产生一行输出(以id 3为例):
id | email | attribute1 | attribute2 | attribute3
3 | e3@gmail.com | 4 | "" | "" |
有人可以建议可以完成此任务的SQL查询语言吗?
我想要运行的相关查询是查找没有attribute3值的所有id / email。在上面的示例中,这将是id的2和3.请注意,id 3甚至没有为attributeid3提供空值,它只是缺少。
任何帮助将不胜感激。 约翰
答案 0 :(得分:0)
我知道这是一篇很老的文章,但是我只需要做同样的事情。这是我使用的查询。请注意,您需要根据已设置的自定义属性来修改查询。您可以看到我的姓名,城市和州,如下面的AS子句所示。您需要将它们映射到属性ID。此外,该州还有一个我链接到的州名称表。我排除了列入黑名单(未订阅),超过2次跳出和未经确认的用户。
SELECT
users.email,
(SELECT value
FROM `phplist_user_user_attribute` attrs
WHERE
attrs.userid = users.id and
attributeid=1
) AS name,
(SELECT value
FROM `phplist_user_user_attribute` attrs
WHERE
attrs.userid = users.id and
attributeid=3
) AS city,
(SELECT st.name
FROM `phplist_user_user_attribute` attrs
LEFT JOIN `phplist_listattr_state` st
ON attrs.value = st.id
WHERE
attrs.userid = users.id and
attributeid=4
) AS state
FROM
`phplist_user_user` users
WHERE
users.blacklisted=0 and
users.bouncecount<3 and
users.confirmed=1
;
我希望有人能对此有所帮助。