我在下面有这个连接查询。我有一个问题。 shipmentUnits列出错了。它只是计算总项目。问题是我计算了两组除了发货字段以外共有的所有对象。postgres SQL查询计数两组对象
SELECT count(*) as "units", (select count("EsnsVmas".*) from "EsnsVmas" where
"EsnsVmas"."shipped" = false AND "EsnsVmas"."VmaId" = 2 AND "EsnsVmas"."approved" =
true) as "shippedUnits", "Vmas".*, "Vendors"."name" as "name", "EsnsVmas".id as
"OrderItemId", "PurchaseOrderItems"."price", "Grades"."name" as "vendorGrade",
"Items"."name" as "model", "Items".id as "ItemId", "Grades".id as "GradeId"
FROM "Vmas"
JOIN "EsnsVmas" on ("EsnsVmas"."VmaId" = "Vmas".id)
JOIN "Esns" on ("EsnsVmas"."EsnId" = "Esns".id)
JOIN "PurchaseOrderItems" on ("Esns"."PurchaseOrderItemId" =
"PurchaseOrderItems".id)
JOIN "Items" on ("PurchaseOrderItems"."ItemId" = "Items".id)
JOIN "Grades" on ("PurchaseOrderItems"."GradeId" = "Grades".id)
JOIN "Vendors" on ("Vmas"."VendorId" = "Vendors".id)
WHERE "Vmas".id =2 AND "EsnsVmas"."approved" = true
GROUP BY "Vmas".id, "PurchaseOrderItems".id, "Grades".id, "Items".id, "Vendors".id, "EsnsVmas".id ;
似乎在shipmentUnits查询和外部查询之间没有关系 - 即它将在所有行中产生相同的值。这是它应该做什么?或者是子查询应该每行有所不同? – jcern
它应该每行不同。 ShippedUnits仅仅是批准并发货的EsnsVmas。单位只是EsvVmas被批准,并没有发货。实际上你的关系是正确的。但那只是因为我修改了这个问题,并拿出了一堆我认为不必要的连接和字段。 – user1175817
我需要将它们添加回去吗?或者您可以回答如何使用这种方式使用连接执行两个计数的问题 – user1175817