【问题标题】:Create mysql view from 2 tables with should match on first table column value and second table column value从 2 个表创建 mysql 视图,第一个表列值和第二个表列值应该匹配
【发布时间】:2020-10-29 09:33:58
【问题描述】:

嗨, 我有两个 WordPress 表,我正在尝试使用它们生成一个新视图。现在如何确保我生成的新视图具有与第一个表列值和第二个表列值匹配的值。

例如,我想生成一个视图,其中表 1 的 entry_id 与表 2 的 id 匹配,并且 meta_key 4.3 的值应该等于表 1 中的 '' 和表 2 中的 payment_status='Paid'

生成下面的视图,其中表 1 中的 Meta_value='Ind_City_1_Loc_1' 和表 2 中的支付状态 = 'paid'。

SELECT 
    MAX(CASE
        WHEN p.meta_key = 'given_transaction_id' THEN p.meta_value
        ELSE NULL
    END) AS 'TransactionID',
    MAX(CASE
        WHEN p.meta_key = '17' THEN p.meta_value
        ELSE '1'
    END) AS 'Quantity',
    MAX(CASE
        WHEN p.meta_key = '7.3' THEN p.meta_value
        ELSE NULL
    END) AS 'First Name',
    MAX(CASE
        WHEN p.meta_key = '7.6' THEN p.meta_value
        ELSE NULL
    END) AS 'Last Name',
    MAX(CASE
        WHEN p.meta_key = '8' THEN p.meta_value
        ELSE NULL
    END) AS 'Email',
    MAX(CASE
        WHEN p.meta_key = '9' THEN p.meta_value
        ELSE NULL
    END) AS 'Contact',
    MAX(CASE
        WHEN p.meta_key = '20.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 1',
    MAX(CASE
        WHEN p.meta_key = '27.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 2',
    MAX(CASE
        WHEN p.meta_key = '34.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 3',
    MAX(CASE
        WHEN p.meta_key = '41.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 4',
    MAX(CASE
        WHEN p.meta_key = '48.3' THEN p.meta_value
        ELSE NULL
    END) AS 'Member 5'
FROM
    pday_gf_entry_meta AS p,
    pday_gf_entry AS pm
WHERE
    (p.entry_id = pm.id AND p.form_id = '12')
GROUP BY p.entry_id

【问题讨论】:

    标签: mysql mysql-python


    【解决方案1】:

    我相信您所描述的内容将被限定为 VIEW,由 JOIN 构成 - 而不是一个新表。

    我的MySQL 技能有点尘土飞扬,但从技术上讲,您可以根据您描述的条件INSERT,但您需要先创建目标表。

    无论如何,创建VIEW 可能是您解决问题的最短路径。

    此外,如果您使用 代码格式化工具 -- 无论是通过 WISYWIG 工具栏还是 Markdown,您都可能会收到更好的建议/关注。

    例如:

    select MAX(CASE WHEN p.meta_key = 'given_transaction_id' THEN p.meta_value ELSE NULL END) AS 'TransactionID', MAX(CASE WHEN p.meta_key = '17' THEN p.meta_value ELSE '1' END) AS 'Quantity', MAX(CASE WHEN p.meta_key = '7.3' THEN p.meta_value ELSE NULL END) AS 'First Name', MAX(CASE WHEN p.meta_key = '7.6' THEN p.meta_value ELSE NULL END) AS 'Last Name', MAX(CASE WHEN p.meta_key = '8' THEN p.meta_value ELSE NULL END) AS 'Email', MAX(CASE WHEN p.meta_key = '9' THEN p.meta_value ELSE NULL END) AS 'Contact', MAX(CASE WHEN p.meta_key = '20.3' THEN p.meta_value ELSE NULL END) AS 'Member 1', MAX(CASE WHEN p.meta_key = '27.3' THEN p.meta_value ELSE NULL END) AS 'Member 2', MAX(CASE WHEN p.meta_key = '34.3' THEN p.meta_value ELSE NULL END) AS 'Member 3', MAX(CASE WHEN p.meta_key = '41.3' THEN p.meta_value ELSE NULL END) AS 'Member 4', MAX(CASE WHEN p.meta_key = '48.3' THEN p.meta_value ELSE NULL END) AS 'Member 5'
    
    from pday_gf_entry_meta as p, pday_gf_entry as pm
    
    where (p.entry_id = pm.id and p.form_id = '12')
    
    group by p.entry_id```
    

    【讨论】:

    • 谢谢,会进一步检查。
    • 是的,创建视图帮助它很快。谢谢你。我的基础很差。
    猜你喜欢
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多