Не уверен, какую часть вы хотите объяснить, но в любом случае, мы идем
В этой части указывается, какие столбцы вы хотите:
SELECT
u.id, u.user_login,
Далее следует часть, в которую вы включаете исходные таблицы:
FROM wp_users u
LEFT JOIN wp_usermeta m ON u.ID = m.user_id
Используя left join
, вы убедитесь, что получите строки из wp_users
, даже если в wp_usermeta
нет совпадений. ON u.ID = m.user_id
соединяет строки между wp_users
и wp_usermeta
.
Очевидно, wp_usermeta
является таблицей ключ-значение, и это ограничивает интересующие вас ключи.
AND m.meta_key IN ('title', 'first_name', 'last_name', 'suburb', 'state', 'country', 'postcode', 'contact_no', 'email', 'occupation', 'workplace', 'maternitybg', 'trainingdate', 'traininglocation', 'coltraining', 'isinstructor', 'gender', 'idf_indig_tsi', 'idf_ct_ld', 'comments')
Наконец, есть предложение group by, которое будет выводить одну строку для каждого отдельного значения u.ID
.
GROUP BY u.ID
В списке полей есть небольшая хитрость с использованием оператора case.
MIN(CASE m.meta_key WHEN 'title' THEN m.meta_value END) AS title,
Сначала вы получите значение m.meta_value
, если m.meta_key
равно 'title'
, в противном случае значение будет равно null
.
CASE m.meta_key WHEN 'title' THEN m.meta_value END
Если для wp_usermeta
для данного пользователя имеется более одной 'title'
клавиш, вы получите значение min (). Название «Водитель автобуса» будет выбрано перед названием «Водитель такси».
MIN(CASE m.meta_key WHEN 'title' THEN m.meta_value END)
И наконец вы даете столбцу восстановленный псевдоним столбца title
.
MIN(CASE m.meta_key WHEN 'title' THEN m.meta_value END) AS title,