私は次のように設定されたデータベースを使用しています。
entity field value
1 start_date June 1, 2010
1 end_date August 30, 2010
1 artist some name
そして、開始したが終了していないアーティスト名「somename」のすべてのエンティティにクエリを実行したいと思います。
私はこのようなものを思いついた:
SELECT start.entity
FROM field_values AS `start`
INNER JOIN field_values AS `end`
INNER JOIN field_values AS `artist`
WHERE
(start.field = 'start_date' AND end.field = 'end_date' AND artist.field='artist') AND
(STR_TO_DATE(start.value, '%M %d, %Y') < NOW() AND
STR_TO_DATE(end.value, '%M %d, %Y') > NOW()) AND
artist.value="some artist";
しかし、これは信じられないほど効率的であると私は思いません。これに対するより良いアプローチはありますか?