我的表如下所示:
User
| id | name |
| 1 | user1 |
| 2 | user2 |
| 3 | user3 |
| 4 | user4 |
| 5 | user5 |
| 6 | user6 |
| 7 | user7 |
| 8 | user8 |
Event
| id | name | created_by | published_by |
| 1 | event1 | 1 | 2 |
| 2 | event2 | 2 | 2 |
| 3 | event3 | 3 | 1 |
Team
| id | name | player1 | player2 | player3 | player4 |
| 1 | teamA | 1 | 2 | | |
| 2 | teamB | 5 | 6 | | |
Schedule
| id | event_id | player1 | player2 | team1 | team2 | when_do_they_play | round |
| 1 | 1 | 1 | 3 | | | 2019-09-20 11:22:33 | 1 |
| 1 | 1 | 2 | 4 | | | 2019-09-21 12:32:23 | 1 |
| 1 | 1 | 5 | 6 | | | 2019-09-22 22:42:03 | 4 |
| 2 | 2 | | | 1 | 2 | 2019-09-25 21:12:43 | 2 |
我正在使用以下查询从中选择数据
scheduled_games = (
db.session.query(
e.name.label('event_name'),
u1.name.label('player1'),
c1.code.label('player1_country'),
u2.name.label('player2'),
c2.code.label('player2_country'),
s.when_do_they_play,
s.round.label('round'),
t1.name.label('team1'),
t2.name.label('team2')
)
.outerjoin(u1, u1.id == s.player1)
.outerjoin(u2, u2.id == s.player2)
.outerjoin(e, e.id == s.event_id)
.outerjoin(c1, c1.id == u1.country)
.outerjoin(c2, c2.id == u2.country)
.outerjoin(t1, t1.id == s.team1)
.outerjoin(t2, t2.id == s.team2)
.filter(s.when_do_they_play>=(datetime.utcnow() - timedelta(days=10)))\
.order_by(s.when_do_they_play)
.order_by(s.round.asc())
)
慕侠2389804
相关分类