Объяснение простого SQL для получения user_meta из Wordpress - PullRequest
0 голосов
/ 25 сентября 2011

У меня ниже команда SQL, которая работает, чтобы получить подробности user_meta в Wordpress.Это прекрасно работает, чтобы получить данные в одной таблице и одной строке для каждой пользовательской информации с информацией для каждого пользователя в каждом столбце, но я просто пытаюсь выяснить, как это работает.Кто-нибудь может быть настолько любезен, чтобы объяснить ниже?

1002

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 25 сентября 2011

Не уверен, какую часть вы хотите объяснить, но в любом случае, мы идем

В этой части указывается, какие столбцы вы хотите:

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,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...