Не получается сделать запрос в 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 JOIN group ON module.id = group.module_id INNER JOIN elements ON group.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)

Как от них избавиться?


Ответы (0 шт):