加入三个表

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()