ОБНОВЛЕНИЕ Платежный запрос теперь решается с помощью, предоставленной в ответах. Ответ Клубники очень близок. Его просто нужно немного отредактировать, так как предложение 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')
Это соответствует следующим данным для моего поля 'Pay':
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
Я перехожу к этому с моим исходным запросом ниже, и все работает.
Исходное сообщение
Я уверен, что делаю это намного сложнее, чем нужно. Ниже приведена схема и запрос. Когда я добавляю запрос Pay, я получаю результаты, которые не соответствуют правильно. Если я удаляю подзапрос «Оплатить», он работает нормально (за исключением того, что нет оплаты).
В базе данных у меня есть много записей в 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'
Есть ли способ изменить это последнее Внутреннее объединение, чтобы оно содержало что-то вроде: WHERE
wp_usermeta.meta_value = '_um_groups_47859_price'
, в котором 47859 был бы wp_um_groups_members.group_id?