У меня есть собственная таблица ссылок, которая выглядит следующим образом:
class Domain(Base):
__tablename__ = "domains"
domain_id = Column(Integer(), primary_key=True)
parent_id = Column(Integer(), ForeignKey('domains.domain_id'))
domain_name = Column(String(255), unique=True)
Пример данных:
domain_id, parent_id, domain_name
1,,google.com
2,,yahoo.com
3,1,images.google.com
4,1,drive.google.com
5,2,mail.yahoo.com
Мне нужнонаписать запрос, в котором все домены будут размещены сразу после родительского домена.
1,,google.com
3,1,images.google.com
4,1,drive.google.com
2,,yahoo.com
5,2,mail.yahoo.com
Моя лучшая попытка:
subdomain = aliased(Domain, name='subdomain')
domains = session.query(Domain, subdomain.domain_name)
domains = domains.outerjoin(subdomain, Domain.parent_id==subdomain.domain_id).filter_by(domain_name=None)
subdomains = session.query(Domain, subdomain.domain_name)
subdomains = subdomains.join(subdomain, Domain.domain_id==subdomain.parent_id)
query = domains.union(subdomains)
Но результат не совсем тот, который яищем.
1,,google.com
1,3,images.google.com
1,4,drive.google.com
2,,yahoo.com
2,5,mail.yahoo.com
domain_id и parent_id меняются местами.