「開始日」は「publication_date」という意味です。
スキーマ定義がない場合は、列名とデータ型を推測します
これを取得する1つの方法は、EXISTS述部で相関サブクエリを使用することですが、これは最も効率的なアプローチではない場合があります。
SELECT p.id
FROM wp_posts p
WHERE EXISTS
( SELECT 1
FROM wp_postmeta m1
WHERE m1.wp_posts_id = p.id
AND m1.meta_option_name = 'publication date'
AND m1.meta_option_date_value <= NOW()
)
AND EXISTS
( SELECT 1
FROM wp_postmeta m2
WHERE m2.wp_posts_id = p.id
AND m2.meta_option_name = 'expiration date'
AND m2.meta_option_date_value > NOW()
)
LEFTJOINの使用について具体的に質問されました
LEFT JOIN操作を使用して同等の結果を得ることができます(ただし、このクエリはINNER JOIN操作を実行するのと実際に同等です)。
SELECT p.id
FROM wp_posts p
LEFT
JOIN wp_postmeta m1
ON m1.wp_posts_id = p.id
AND m1.meta_option_name = 'publication date'
AND m1.meta_option_date_value <= NOW()
LEFT
JOIN wp_postmeta m2
ON m2.wp_posts_id = p.id
AND m2.meta_option_name = 'expiration date'
AND m2.meta_option_date_value > NOW()
WHERE m1.id IS NOT NULL
AND m2.id IS NOT NULL
GROUP
BY p.id