繁体   English   中英

如何从 wordpress 表中获取 SQL 查询

[英]How can I get a SQL Query from wordpress tables

我有一个 sql 查询,但没有找到正确的解决方案。

查询有效,但它没有显示wp_usermeta表的列,只显示wp_users的列。

如果我删除where子句,将显示所有列的所有值的行,但我只需要取决于meta_value = "Prod"列中的 meta.key = 'kennung_produzent' 的行

SELECT p.ID,
       p.user_login,
       p.user_registered,
       p.display_name,
        max( CASE WHEN pm.meta_key = 'nickname' and p.ID = pm.user_id THEN pm.meta_value END ) as Nickname,
        max( CASE WHEN pm.meta_key = 'billing_email' and p.ID = pm.user_id THEN pm.meta_value END ) as email,
        max( CASE WHEN pm.meta_key = 'billing_first_name' and p.ID = pm.user_id THEN pm.meta_value END ) as Vorname,
        max( CASE WHEN pm.meta_key = 'billing_last_name' and p.ID = pm.user_id THEN pm.meta_value END ) as Nachname,
        max( CASE WHEN pm.meta_key = 'billing_phone' and p.ID = pm.user_id THEN pm.meta_value END ) as Telefon,
        max( CASE WHEN pm.meta_key = 'billing_postcode' and p.ID = pm.user_id THEN pm.meta_value END ) as PLZ,
        max( CASE WHEN pm.meta_key = 'billing_address_1' and p.ID = pm.user_id THEN pm.meta_value END ) as Strasse,     
        max( CASE WHEN pm.meta_key = 'billing_city' and p.ID = pm.user_id THEN pm.meta_value END ) as Ort,
        max( CASE WHEN pm.meta_key = 'kennung_produzent' and p.ID = pm.user_id THEN pm.meta_value END ) as Kennung

from
    wp_users p 
    join wp_usermeta pm on p.ID = pm.user_id
where  
    pm.meta_value = 'Prod'
group by
    p.ID

如果我理解正确,您只想将结果过滤为wp_usermeta中存在meta_key='kennung_produzent'meta_value = 'Prod'

该查询所做的是不同的,因为您正在按pm.meta_value = 'Prod'进行过滤,因此您要删除所有行,因为它还期望在pm.meta_key = 'billing_email'pm.meta_key = 'nickname'时值是 Prod pm.meta_key = 'nickname'等等。

不知道您的数据,并且根据您的最后评论,假设每个用户有超过一行 meta_key="kennung_produzent",我会说您想要做的更类似于

select * from (

SELECT p.ID,
       p.user_login,
       p.user_registered,
       p.display_name,
        max( CASE WHEN pm.meta_key = 'nickname' and p.ID = pm.user_id THEN pm.meta_value END ) as Nickname,
        max( CASE WHEN pm.meta_key = 'billing_email' and p.ID = pm.user_id THEN pm.meta_value END ) as email,
        max( CASE WHEN pm.meta_key = 'billing_first_name' THEN pm.meta_value END ) as Vorname,
        max( CASE WHEN pm.meta_key = 'billing_last_name' THEN pm.meta_value END ) as Nachname,
        max( CASE WHEN pm.meta_key = 'billing_phone' THEN pm.meta_value END ) as Telefon,
        max( CASE WHEN pm.meta_key = 'billing_postcode'  THEN pm.meta_value END ) as PLZ,
        max( CASE WHEN pm.meta_key = 'billing_address_1' THEN pm.meta_value END ) as Strasse,     
        max( CASE WHEN pm.meta_key = 'billing_city' THEN pm.meta_value END ) as Ort,
        max( CASE WHEN pm.meta_key = 'kennung_produzent' THEN pm.meta_value END ) as Kennung

from
    wp_users p 
    join wp_usermeta pm on p.ID = pm.user_id
group by
    p.ID

) a

where Kennung LIKE "Prod"

此查询的性能可能非常糟糕,但请让我知道它是否满足您的需求,因此至少我们有一个起点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM