KSQL:无效的联接条件:外键表-当联接2个以上的表时,不支持将表联接作为n路的一部分

4uqofj5v  于 2022-09-21  发布在  Apache
关注(0)|答案(1)|浏览(218)

我有3个关于kafka_int key的主题

客户、订单、订单详细信息

当我只连接两张table时

select * from orders o join customer c on o.custid = c.custid emit changes; -- OK 

select od.id, od.orderid from orderdetails od join orders o on od.orderid = o.orderid emit changes; -- OK

-- NOT OK

select * from orderdetails od
join order o on od.orderid = o.orderid
join customer c on o.custid = c.custid
emit changes limit 5; 

-- Error
Invalid join condition: foreign-key table-table joins are not supported as part of n-way joins. Got o.custid = c.custid.

然而,我找不到任何文档来说明多个表如何联接工作,以及它的限制是什么。

我使用的是合流Kafka Helm 7.0版

v8wbuo2f

v8wbuo2f1#

如错误消息所述,Kesqldb不支持表到表的多连接(n向连接)。为了实现这种连接,您可能需要制作一个中间支撑表。大概是这样的:

CREATE TABLE orderdetails_join_order AS 
SELECT *
FROM orderdetails od
JOIN order o ON od.orderid = o.orderId;

现在,您可以使用该表执行查询:

SELECT * FROM orderdetails_join_order odjo
JOIN customer c ON odjo.custid = c.custid

相关问题