[WordPress] メイン クエリでサブクエリの複数の値を選択に追加することができる方法

スポンサーリンク

Question

クエリ:

SELECT *
FROM `wp_posts`
WHERE `ID`
IN GROUP_CONCAT(
(
SELECT post_id
FROM `wp_postmeta`
WHERE `meta_key` = 'friday_happy_hour_start_time'
AND `meta_value` <= '9'
) && (
SELECT post_id
FROM `wp_postmeta`
WHERE `meta_key` = 'friday_happy_hour_end_time'
AND `meta_value` >= '9'
)
)

サブクエリ 1 および 2 のために使用している GROUP_CONCAT()。 しかしそれが動作していない複数の結果を有する。すべての記事 9 は等しいまたは

meta_value

間 (の)

meta_key

の = ‘friday_happy_hour_end_time’ と

meta_key

が欲しい = ‘friday_happy_hour_start_time’。私にソリューションを提供してください

答え

がありこれは簡単に二度と

wp_postmeta

に参加して行うことができます複数のサブ クエリと

group_concat

を使用する必要はありません投稿条件を定義し

SELECT p.* 
FROM `wp_posts` p
JOIN wp_postmeta m ON(p.ID = m.post_id)
JOIN wp_postmeta m1 ON(p.ID = m1.post_id)
WHERE m.`meta_key` = 'friday_happy_hour_start_time' 
AND m1.`meta_key` = 'friday_happy_hour_end_time' 
AND m.`meta_value` <= '9' 
AND m1.`meta_value` >= '9'

答え

クエリで 1 つのサブように欲しいものを得ることができます group_contact を使用しての代わりにだと思います。ここでの重要な要因は、かっこが

SELECT *
FROM `wp_posts`
WHERE `ID`
IN (
SELECT post_id
FROM `wp_postmeta`
WHERE 
(`meta_key` = 'friday_happy_hour_start_time' AND `meta_value` <= '9')  
OR 
(`meta_key` = 'friday_happy_hour_end_time' AND `meta_value` >= '9')

)-- End of IN

の答え

SELECT *
FROM `wp_posts`
WHERE `ID` IN (
    SELECT DISTINCT post_id
    FROM `wp_postmeta`
    WHERE `meta_key` = 'friday_happy_hour_start_time'
    AND `meta_value` <= '9'

    UNION DISTINCT 

    SELECT DISTINCT post_id
    FROM `wp_postmeta`
    WHERE `meta_key` = 'friday_happy_hour_end_time'
    AND `meta_value` >= '9'
)

http://stackoverflow.com/questions/27597669/how-can-i-add-to-select-multiple-values-of-subquery-in-main-query

スポンサーリンク

Leave a Reply