2013-11-22 5 views
0

Мой вопрос заключается в том, чтобы найти мой трек названия всех треков, записанных на моих художников, которые были включены в базу данных (то есть, есть entrydates) после 1 сентября 2003 годаMySQL JOINS Упрощение, дата Функции

Мои Исполнители , Треки и заголовки связаны с определенными идентификаторами. Таблицы являются следующими:

Artists 
------- 
ArtistID, Artistname, Entrydate 

Tracks 
------ 
TitleID, TrackNum, TrackTitle 

Titles 
------ 
TitleID, ArtistID, Title 

я сформулировал следующий запрос:

SELECT tracktitle 
FROM tracks tr 
     JOIN titles ti 
     ON ti.titleid = tr.titleid 
     JOIN artists ar 
     ON ar.artistid = ti.artistid 
WHERE Year(ar.entrydate) >= 2003 
     AND Month(ar.entrydate) >= 9 
     AND Day(ar.entrydate) >= 1; 

есть более эффективный способ найти эти названия треков, которые записаны (то есть, есть даты въезда) после 1 сентября 2003 года?

+0

Каков тип данных 'entrydate'? datetime, varchar? –

+0

Записи напоминают даты, похожие (но не совсем) на: 1/30/2010 и могут быть пустыми, то есть NULL или null – user2948897

ответ

2

ar.entrydate >= "2003-09-01" достаточно, если тип данных вашего поля - дата. Если это поле метки времени, то date(ar.entrydate)>="2003-09-01".

+0

Да, это сравнение - это то, что я искал. Кроме того, вы считаете, что запрос на мой вопрос логичен? – user2948897

1

Найдите трек-записи всех треков, записанных художниками, которые были введены в базу данных (то есть имеют входные данные) после 1 сентября 2003 года. Используйте одно или несколько соединений; do не использовать любые подзапросы.