2016-12-23 20 views
1

WordPressプロジェクトのカスタムPHPページを作成しています。私のプロジェクトはイベント情報です。だから私は、日付範囲に基づいてイベントを検索するためのページを作成しています。上記の表のような複雑な方法でWordPress Manual SELECT postmetaカラムの値に基づいてMySQLを選択

イベントテーブル

post_id | title  | 
25  | Marathon Run | 

postmetaテーブル

meta_id | post_id | meta_key | meta_value 
1  | 25  | StartDate | 2016-12-25 00:00 
2  | 25  | EndDate | 2016-12-26 00:00 

ワードプレスのデータを格納します。 "StartDate"と "EndDate"はmeta_keyカラムに値として格納され、 "StartDate"と "EndDate"の実際の値はmeta_valueカラムに格納されます。

私はそれは難しい私はいつも、たとえば上で動作通常の構造のようにフィルタリングすることを見つける:このような構造のための日付範囲をフィルタリングするためのMySQL文を書くためにどのように

SELECT * FROM events WHERE startdate <= $startdate AND enddate >= $enddate 

答えて

0

イベントテーブル(post_id)に参加し、meta_key(StartDateとEndDate)をフィルタリングして、正しい範囲内にあるかどうかを確認する必要があるようです。

以下を参照してください。

SELECT * FROM events JOIN postmeta ON events.post_id = postmeta.post_id WHERE (meta_key = 'StartDate' AND meta_value <= $startdate) AND (meta_key = 'EndDate' AND meta_value >= $enddate) 
+0

meta_keyはポストメタテーブルにあり、イベントは別のテーブルにあります。 –

+0

あなたが言及した各テーブルのスキーマの例を提供してください – Garbit

+0

これを試して、イベントとポストメタデータを選択できるように結合ステートメントを追加しました – Garbit

関連する問題