私は自分のベストレースをWordPressカスタムタイプから見つけるためにカスタムSELECT
クエリを作成しようとしていますが、時刻はカスタムメタフィールドです。WordPressのカスタムSELECTクエリでMINを使用
これは私が投稿を選択するために使用したクエリです。私はデバッグのためにそれを単純化してきましたが、最終的に私は、いくつかの用語のナメクジを選択し、GROUP BY
を使用してそれぞれのMIN
を見つけたい:
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')
(Iアレイに結果を出力し、一時的にそれをチェックするためにprint_r
を使用しています)
これは、 '10mi'用語で2つのレース/ランを選択し、それらのための正しい時間/日付/タイトルを表示します。私はMIN
機能を追加したとき
問題が来る:
SELECT t.slug,
p.ID,
p.post_date,
p.post_title,
MIN(m.meta_value) as pb_mins
正しい(最小)時間が選択されるが、その他の詳細(日時、タイトル)は、他の10mi実行/レースからですされています。
私はLEFT JOIN
ともINNER JOIN
を使用するようにFROM
句を変更しようとしましたが、同じことが起こります:それは、両方の「10mi」の実行を選択するための罰金ですが、私はMIN
機能を追加し、間違った出力を提供します。
ご協力いただきありがとうございます。これは私の最初の投稿ですので、詳細を追加する必要がある場合はお知らせください。
更新: 'MIN'の代わりに 'ORDER BY m.meta_value LIMIT 1'を使用すると正しい結果が得られますが、クエリを複製することなく、これを複数の用語のスラッグにどのように推論するのか分かりません。確かに 'MIN'と' GROUP BY'を使ってこれを行うことは可能でしょうか? – seestevecode
次に、['[グループごとに最大のn]'](http://stackoverflow.com/questions/tagged/greatest-n-per-group)クエリが必要です。 –
ヒント@ypercubeありがとうございました。それは私が以下に投稿した解決策を見つけるのを助けた。私はあなたが答えとしてそれを投稿しなかったので、助けをあなたにもっと信用する方法を知らないのは恐れです。しかし、それは非常に感謝しています。 – seestevecode