我有一件奇怪的事情,我正在尝试为其他API做。我有一个Order
表,它的布局如下:
ID | Billing Address | Shipping Address | Status
-------------------------------------------------
1 | 1 | 1 | 1
2 | 1 | 1 | 1
我希望加入customers
表格。现在,我想加入客户的计费和送货地址,就像几乎有两个不同的客户在结果集中返回。我可以获得连接的嵌套结果吗?
customers
表类似于
ID | First name | Last Name | Street Address
--------------------------------------------------------
1 | Bob | Bobber | 2 Winding Way
2 | 1 | 1 | 1
我是一个相当大的新手,我甚至不能把它结合在一起凌乱的两个结果,更不用说试图澄清哪个是哪个。
我正在尝试像
这样的东西select * from "order"
inner join
"customers as shipping"
on "order"."shipping_address" = "shipping"."customer_id"
inner join
"order_status"
on "order"."order_status_id" = "order_status"."order_status_id"
inner join
"customers as billing"
on "order"."billing_address" = "billing"."customer_id"
答案 0 :(得分:3)
您可能希望在两个不同的别名下加入表customers
。
SELECT
*
FROM
order o
INNER JOIN customers b ON o.billing_address = b.id
INNER JOIN customers s ON o.shipping_address = s.id;
当您使用不同的别名(本例中为b和s)时,您可以多次连接同一个表。
此外,没有必要引用表名和列名,因为默认情况下Postgres不区分大小写(除非您出于某些奇怪的原因使用引号创建表并定义行)。