# 关联查询 isouter=True 表示使用外连接
# 1、查询2020年入职的员工姓名以及该员工的所在部门名称
result = session.execute(select(Employee.name, Dept.name).join(Dept,
isouter=True).where(extract('year', Employee.entry_date) == 2018))
# 2、 查询省份号码是:11111111111。 的员工的姓名,以及该员工所属的部门
result = session.execute(select(Employee.name, Dept.name).join(Dept,
isouter=True).join(IdCard).where(IdCard.card_number == '111111111111'))
# 3、 查询,每个部门名字、city以及该部门下面的员工个数
result = session.execute(select(Dept,
func.count(Employee.dept_id)).join(Employee, isouter=True).group_by(Dept.id))
# 4、查询拥有角色数量超过1的 用户名以及他所拥有的角色数量。
sub_stmt = select(User.username.label('username'),
func.count(Role.id).label('role_count')).join(User.roles).group_by(User.id).sub
query()
result = session.execute(select(sub_stmt.c.username,
sub_stmt.c.role_count).where(sub_stmt.c.role_count > 1))
# 5、 查询每个部门的名字以及它里面的员工数量,并且按照员工数量的个数降序排序。
result = session.execute(select(Dept,
func.count(Employee.dept_id).label('ec')).join(Employee,
isouter=True).group_by(Dept.id).order_by(desc('ec')))