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

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -