我刚刚根据我们将数据与Postgres数组匹配的方式在代码中遇到了一个错误。
问题在于:
在数据库中,我们有一个surcharge
列,该列位于appointment
表中,其中存储了附加到约会的所有附加费的ID。在某些情况下,附加费可能会增加两次,因此在数据库中看起来像{1,1}
。
我使用如下的简单查询来检索与附加到约会的附加费相关的附加费数据:
SELECT s.* FROM surcharge s, appointment a WHERE s.id = ANY(a.surcharges);
不幸的是,我没有测试这种情况,其中存在多个相同的附加费。结果是只返回了1条记录,而不是我真正需要的2条记录。
为了澄清,一个例子是与appointment.surcharges = {1,1}
的约会,我实际上希望能够从surcharges
TWICE检索记录,因为它有两个与之相关的附加费。然后,我使用这些记录创建与约会相关的与账单相关的交易。
所有这一切,是否有一种简单的方法允许查询返回我需要的重复项?
我可以在代码中处理这种情况,但运行一个简单的查询来处理这种情况会很棒。
我正在运行Postgres 9.5。
提前谢谢!
答案 0 :(得分:0)
我认为一个简单的内部联系到一个附加的附加表应该给你你想要的东西:
SELECT s.*
FROM surcharge s
INNER JOIN
(
SELECT UNNEST(surcharges) AS surcharges
FROM appointment
) a
ON s.id = a.surcharges;