Я пытаюсь создать пользовательский запрос SELECT
, чтобы найти мои личные лучшие расы из пользовательских типов WordPress, где время является настраиваемым мета-полем.Использование MIN в пользовательском запросе SELECT WordPress
Это вопрос, который я использовал для выбора сообщений. Я упростил для отладки, но в конце концов, я хочу, чтобы выбрать несколько долгосрочных слизней и найти MIN
для каждого использования GROUP BY
:
SELECT t.slug,
p.ID,
p.post_date,
p.post_title,
m.meta_value as pb_mins
FROM $wpdb->posts p,
$wpdb->postmeta m,
$wpdb->term_relationships tr,
$wpdb->term_taxonomy tt,
$wpdb->terms t
WHERE p.ID = tr.object_id
AND p.ID = m.post_id
AND tr.term_taxonomy_id = tt.term_taxonomy_id
AND tt.term_id = t.term_id
AND p.post_type = 'runs'
AND m.meta_key = 'ssr_duration_min'
AND t.slug in ('10mi')
(я вывода результатов в массив и использовать print_r
, чтобы проверить это временно .)
Это выбирает две гонки/пробежки с термином «10mi» и отображает правильные времена/дату/название для них.
Проблема возникает, когда я добавить MIN
функцию:
SELECT t.slug,
p.ID,
p.post_date,
p.post_title,
MIN(m.meta_value) as pb_mins
Правильное (минимальное) время выбран, но остальные детали (дата, название) являются с другой 10mi запуска/гонки.
Я попытался изменить положение FROM
использовать LEFT JOIN
а также INNER JOIN
, но то же самое происходит: это хорошо для выбора трасс и «10mi», но дает неправильный вывод, когда я добавить функцию MIN
.
Спасибо за любую помощь, которую вы можете предложить. Это мой первый пост, поэтому, пожалуйста, дайте мне знать, если мне нужно добавить какие-либо подробности.
UPDATE: использование 'ORDER BY m.meta_value LIMIT 1' вместо' MIN' приводит к правильному результату, но я не знаю, как бы я экстраполировал его на более чем один термин slug без репликации запроса. Разумеется, это можно сделать с помощью 'MIN' и' GROUP BY'? – seestevecode
Тогда вам понадобится запрос ['[наибольшая-n-группа]'] (http://stackoverflow.com/questions/tagged/greatest-n-per-group). –
Благодарим вас за отзыв @ypercube. Это помогло мне найти решение, которое я разместил ниже. Боюсь, я не знаю, как списать вам больше с помощью, так как вы не опубликовали его в качестве ответа. Тем не менее, это очень ценно. – seestevecode