Я работаю с базой данных, настроенной так:
entity field value
1 start_date June 1, 2010
1 end_date August 30, 2010
1 artist some name
И я хочу запросить все сущности с именем исполнителя «какое-то имя», которые начались, но не закончились.
Я придумал что-то вроде этого:
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";
Но это не кажется мне невероятно эффективным. Есть ли лучший подход к этому?