return f"""
SELECT count(*), users.name FROM coffees
- LEFT JOIN identifiers on coffees.id = identifiers.userid
- LEFT JOIN users on identifiers.userid = users.id
+ INNER JOIN identifiers on coffees.id = identifiers.id
+ INNER JOIN users on identifiers.userid = users.id
{f}
AND (coffees.time BETWEEN
{dtf}
AND {dtt})
- GROUP BY identifiers.userid
+ GROUP BY users.id
"""
assert Q("get_drinkers_of", "FOO") == """
SELECT count(*), users.name FROM coffees
- LEFT JOIN identifiers on coffees.id = identifiers.userid
- LEFT JOIN users on identifiers.userid = users.id
+ INNER JOIN identifiers on coffees.id = identifiers.id
+ INNER JOIN users on identifiers.userid = users.id
WHERE flavor = 'FOO'
AND (coffees.time BETWEEN
datetime('now', 'localtime', '-7 days')
AND datetime('now', 'localtime'))
- GROUP BY identifiers.userid
+ GROUP BY users.id
"""
assert Q("get_drinkers_of", "BAR", ["FROM", "TO"]) == """
SELECT count(*), users.name FROM coffees
- LEFT JOIN identifiers on coffees.id = identifiers.userid
- LEFT JOIN users on identifiers.userid = users.id
+ INNER JOIN identifiers on coffees.id = identifiers.id
+ INNER JOIN users on identifiers.userid = users.id
WHERE flavor = 'BAR'
AND (coffees.time BETWEEN
datetime('FROM', 'localtime')
AND datetime('TO', 'localtime'))
- GROUP BY identifiers.userid
+ GROUP BY users.id
"""
assert Q("get_drinkers_of", ["FOO", "BAR", "B"], ["FROM", "TO"]) == """
SELECT count(*), users.name FROM coffees
- LEFT JOIN identifiers on coffees.id = identifiers.userid
- LEFT JOIN users on identifiers.userid = users.id
+ INNER JOIN identifiers on coffees.id = identifiers.id
+ INNER JOIN users on identifiers.userid = users.id
WHERE (flavor = 'FOO' OR flavor = 'BAR' OR flavor = 'B')
AND (coffees.time BETWEEN
datetime('FROM', 'localtime')
AND datetime('TO', 'localtime'))
- GROUP BY identifiers.userid
+ GROUP BY users.id
"""