更新现在在回复中提供的帮助下解决了支付查询。草莓提供的答案非常接近。它只需要稍微编辑一下,因为 WHERE 子句有我在原始查询中提供的冗余和不正确的语句。这是正确的,稍作修改的查询:
SELECT ux.user_id
, ux.meta_value pay
FROM wp_um_groups_members m
Join wp_usermeta ux
ON m.user_id1 = ux.user_id
WHERE ux.meta_key = CONCAT('_um_groups_', m.group_id,'_price')
这与我的“支付”字段的以下数据相匹配:
From up_usermeta:
umeta_id | user_id | meta_key | meta_value
===========================================================
622680 | 5989 | _um_groups_47652_price | 500
From wp_um_groups_members:
id | group_id | user_id1 | user_id2 | status | role | invites | time_stamp | date_joined
===============================================================================================================
187 | 47682 | 5989 | 3 | approved | member | 1 | 2020-02-15 10:59:08 | 2020-02-15 10:59:08
我通过下面的原始查询完成了该操作,一切正常。
原帖
我敢肯定,我让这件事变得比需要的困难得多。下面是流程图和查询。当我添加“支付”子查询时,我收到了不正确匹配的结果。如果我删除“支付”子查询,它可以正常工作(除了没有支付)。
在数据库中,我在 wp_usermeta.meta_value 中有许多条目,例如:
meta_value = _um_groups_47859_price
在该示例中,数字 47859 等于 wp_um_groups_members.group_id 的值
因此,我希望能够使用类似于以下内容的方式查询该完全匹配:LIKE CONCAT('%', wp_um_groups_members.group_id ,'%')
这似乎也不起作用。
这是我当前的查询:
SELECT
wp_um_groups_members.group_id AS ID, wp_posts.post_title AS Gig, Location.Location, Type.`Event Type`, wp_users.display_name AS Player, Date.Date, Pay.Pay
FROM
wp_um_groups_members
Inner Join wp_posts ON
wp_um_groups_members.group_id = wp_posts.ID
Inner Join (SELECT
wp_postmeta.post_id, wp_postmeta.meta_value AS Location
FROM
wp_postmeta
WHERE
wp_postmeta.meta_key = '_um_groups_event_location'
) Location ON
Location.post_id = wp_posts.ID
Inner Join (SELECT
wp_postmeta.post_id, wp_postmeta.meta_value AS `Event Type`
FROM
wp_postmeta
WHERE
wp_postmeta.meta_key = '_um_groups_event_type'
) Type ON
Type.post_id = wp_posts.ID
Inner Join wp_users ON
wp_users.ID = wp_um_groups_members.user_id1
Inner Join (SELECT
wp_postmeta.post_id, wp_postmeta.meta_value AS Date
FROM
wp_postmeta
WHERE
wp_postmeta.meta_key = '_um_groups_event_start'
) Date ON
Date.post_id = wp_posts.ID
Inner Join (SELECT
wp_usermeta.user_id, wp_usermeta.meta_value AS Pay
FROM
wp_um_groups_members
Inner Join wp_usermeta ON
wp_um_groups_members.user_id1 = wp_usermeta.user_id
WHERE
wp_usermeta.meta_key like '%price'
) Pay ON
Pay.user_id = wp_users.ID
WHERE
wp_um_groups_members.status = 'approved'
有没有办法修改最后一个 Inner Join 以包含以下内容:WHERE
wp_usermeta.meta_value = '_um_groups_47859_price'其中 47859 将是 wp_um_groups_members.group_id?
