I have added the SQL query used for view to mySQL and receive error 1064 -
i have added sql query used view mysql , receive error 1064
here sql have added
select field_data_field_session_start_date.delta field_data_field_session_start_date_delta, field_data_field_session_start_date.entity_id date_id_date_filter, field_data_field_session_start_date.delta date_delta_date_filter, node.title node_title, node.nid nid, node.language node_language, field_data_field_session_start_date.field_session_start_date_value field_data_field_session_start_date_field_session_start_date, 'node' field_data_field_session_start_date_node_entity_type {node} node left join {field_data_field_session_start_date} field_data_field_session_start_date on node.nid = field_data_field_session_start_date.entity_id , (field_data_field_session_start_date.entity_type = 'node' , field_data_field_session_start_date.deleted = '0') (( (node.status = '1') )and(( (date_format(field_data_field_session_start_date.field_session_start_date_value, '%y-%m-%d') > '2014-03-24') ))) order field_data_field_session_start_date_field_session_start_date asc limit 3 offset 0
why error occurring
for mysql, don't enclose identifiers in curly braces " { }
". (mysql allow curly braces part of bizarre outer join syntax {oj }
, there's no call use syntax. actual text of 1064 message gives indication actual location in statement mysql sees problem. (often, isn't location real problem is, it's clue.)
your sql statement difficult decipher; no 1 can read it.
all unnecessary parenthesis in where
clause don't eliminate ambiguity, adding confusion.
curiously, query specifies outer join, "outerness" of join negated predicate in clause, it's inner join. it's misleading.
shorter table aliases make sql easier read, or @ least, sql more deciphered.
on note, enable indexes used range scans on datetime columns, don't wrap date columns functions... disables mysql's ability use index range scan.
for example, mysql can't use index range scan operation satisfy predicate:
date_format( mydatetimecol, '%y-%m-%d') > '2103-03-24'
but mysql can use index range scan satisfy equivalent:
mydatetimecol >= '2103-03-24' + interval 1 day
consider sql returns equivalent resultset...
select f.delta field_data_field_session_start_date_delta , f.entity_id date_id_date_filter , f.delta date_delta_date_filter , n.title node_title , n.nid nid , n.language node_language , f.field_session_start_date_value field_data_field_session_start_date_field_session_start_date , 'node' field_data_field_session_start_date_node_entity_type `node` n join `field_data_field_session_start_date` f on f.entity_id = n.nid , f.entity_type = 'node' , f.deleted = '0' , f.field_session_start_date_value >= '2014-03-24' + interval 1 day n.status = '1' order f.field_session_start_date_value asc limit 3 offset 0
Comments
Post a Comment