Не получается сделать запрос в SQL-Alchemy
Есть SQL-запрос, который прекрасно отрабатывает в чистом виде:
SELECT
GROUP_CONCAT(g.id),
count(e.width),
COUNT(e.height)
FROM
`group` as g
INNER JOIN module m on g.module_id = m.id
INNER JOIN elements e on g.id = e.group_id
GROUP BY
e.width, e.height
HAVING
COUNT(e.height) > 1;
Пытаюсь его же сделать в SQL-Alchemy:
from sqlalchemy import func
rez = db.session.query(
(func.group_concat(Group_tableDB.id).distinct()).label("g_id"),
func.count(Elements_tableDB.width),
func.count(Elements_tableDB.height)
).join(
Group_tableDB, Module_tableDB.id == Group_tableDB.module_id
).join(
Elements_tableDB, Group_tableDB.id == Elements_tableDB.group_id
).group_by(
Elements_tableDB.width,
Elements_tableDB.height
).having(
Elements_tableDB.height > 1
).all()
Выдает ошибку:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1066, "Not unique table/alias: 'elements'") [SQL: SELECT DISTINCT group_concat(
group.id) AS g_id, count(elements.width) AS count_1, count(elements.height) AS count_2 FROM elements INNER JOINgroupON module.id =group.module_id INNER JOIN elements ONgroup.id = elements.group_id GROUP BY elements.width, elements.height HAVING elements.height > %(height_1)s] [parameters: {'height_1': 1}]
В чем может быть проблема?
UPD:
Реализовал выборку:
rez = db.session.query(
(func.group_concat(Module_tableDB.id)).label('m_id'),
(func.group_concat(Group_tableDB.id)).label('g_id'),
(func.count(Elements_tableDB.width)).label('e_width'),
(func.count(Elements_tableDB.height)).label('e_height')
).join(
Group_tableDB, Module_tableDB.id == Group_tableDB.module_id
).join(
Elements_tableDB, Group_tableDB.id == Elements_tableDB.group_id
).group_by(
Elements_tableDB.width,
Elements_tableDB.height
).having(
func.count(Elements_tableDB.height) > 1
).all()
Но теперь в выборке появились дублирующиеся элементы:
('29,30,1,30,30,30,1,30,29,29,30,1,29', '528,381,202,389,393,386,203,383,527,527,391,204,528', 13, 13)
Как от них избавиться?