加入三个表
Join on three tables
我正在设计一个约会应用程序。我有两个 tables,match 和 customer,在 match table 我有这些字段:
match_id(primary_key),
first_customer_id(foreign_key from customer_table),
second_customer_id (foreign_key from customer_table)
现在为了响应前端,我需要显示所有:
matches(match_id,first_customer_id,first_customer_name,second_customer_id,second_customer_name)
我能够在两个 table 之间执行连接:匹配和客户。但我想在比赛中执行加入,first_customer & second_customer。就像我的情况一样,我需要在两个 tables(Match & Customer) 上执行连接,但是有两个来自相同 table(Customer)
的外键
对于两个 tables 我正在使用 sqlalchemy 和这个查询
select([
Match,
Customers
]).select_from(
Match.join(Customers)
)
请帮助我谢谢!
您可能需要为第二个客户 table 使用 alias()
。
在此示例中,matches_t 和 customers_t 是 table 个对象。
with Session(engine) as session:
second = customers_t.alias('second')
joins = matches_t.join(customers_t, matches_t.c.first_customer_id == customers_t.c.id).join(second, matches_t.c.second_customer_id == second.c.id)
q = select(matches_t, customers_t.c.name, second.c.name.label('second_name')).select_from(joins)
rows = session.execute(q).fetchall()
我正在设计一个约会应用程序。我有两个 tables,match 和 customer,在 match table 我有这些字段:
match_id(primary_key),
first_customer_id(foreign_key from customer_table),
second_customer_id (foreign_key from customer_table)
现在为了响应前端,我需要显示所有:
matches(match_id,first_customer_id,first_customer_name,second_customer_id,second_customer_name)
我能够在两个 table 之间执行连接:匹配和客户。但我想在比赛中执行加入,first_customer & second_customer。就像我的情况一样,我需要在两个 tables(Match & Customer) 上执行连接,但是有两个来自相同 table(Customer)
的外键对于两个 tables 我正在使用 sqlalchemy 和这个查询
select([
Match,
Customers
]).select_from(
Match.join(Customers)
)
请帮助我谢谢!
您可能需要为第二个客户 table 使用 alias()
。
在此示例中,matches_t 和 customers_t 是 table 个对象。
with Session(engine) as session:
second = customers_t.alias('second')
joins = matches_t.join(customers_t, matches_t.c.first_customer_id == customers_t.c.id).join(second, matches_t.c.second_customer_id == second.c.id)
q = select(matches_t, customers_t.c.name, second.c.name.label('second_name')).select_from(joins)
rows = session.execute(q).fetchall()