python - Why does SQLite3 not yield an error -
i quite new sql, trying bugfix output of sql-query. question not concern bug, rather why sqlite3 not yield error when should.
i have query string looks like:
querystring = ("select e.event_id, " "count(e.event_id), " "e.state, " "min(e.boot_time) boot_time, " "e.time_occurred, " "coalesce(e.info, 0) info " "from events e " "join leg on leg.id = e.leg_id " "group e.event_id " "order leg.num_leg desc, " "e.event_id asc;\n" )
this yields output no errors.
what dont understand, why there no error when group e.event_id , e.state , e.time_occurred not contain aggregate-functions , not part of group statement?
e.state string column. e.time_occurred integer column.
i using querystring in python.
sqlite , mysql allow bare columns in aggregation query. explained in documentation:
in query above, "a" column part of group clause , each row of output contains 1 of distinct values "a". "c" column contained within sum() aggregate function , output column sum of "c" values in rows have same value "a". result of bare column "b"? answer "b" result value "b" in 1 of input rows form aggregate. problem not know input row used compute "b", , in many cases value "b" undefined.
your particular query is:
select e.event_id, count(e.event_id), e.state, min(e.boot_time) boot_time, e.time_occurred, coalesce(e.info, 0) info events e join leg on leg.id = e.leg_id " group e.event_id order leg.num_leg desc, e.event_id asc;
if e.event_id
primary key in events
, syntax supported ansi standard, because event_id
sufficient uniquely define other columns in row in events
.
Comments
Post a Comment