изменить SQL-запрос, чтобы НЕ возвращать одно и то же значение несколько раз в JOIN - PullRequest
0 голосов
/ 11 октября 2018

У меня есть следующий SQL-запрос

SELECT "Item"."id",
       "Item"."name",
       "Item"."active",
       "Item"."vendible",
       "Item"."purchasable",
       "Item"."type",
       "Item"."listNetPrice",
       "vendors"."id" AS "vendors.id",
       "vendors->PartnerItems"."createdAt" AS "vendors.PartnerItems.createdAt",
       "vendors->PartnerItems"."updatedAt" AS "vendors.PartnerItems.updatedAt",
       "vendors->PartnerItems"."ItemId" AS "vendors.PartnerItems.ItemId",
       "vendors->PartnerItems"."PartnerId" AS "vendors.PartnerItems.PartnerId",
       "VatKey"."id" AS "VatKey.id",
       "VatKey"."key" AS "VatKey.key"
FROM "overseer"."Item" AS "Item"
  INNER JOIN ("overseer"."PartnerItems" AS "vendors->PartnerItems"
  INNER JOIN "overseer"."Partner" AS "vendors" ON "vendors"."id" = "vendors->PartnerItems"."PartnerId")
          ON "Item"."id" = "vendors->PartnerItems"."ItemId"
         AND ("vendors"."id" = 1
          OR "vendors"."id" = 2)
  LEFT OUTER JOIN "overseer"."VatKey" AS "VatKey" ON "Item"."VatKeyId" = "VatKey"."id"
WHERE ("Item"."name" ilike '%%' OR "Item"."tariffNo" ilike '%%')
ORDER BY "Item"."id" ASC LIMIT 5 OFFSET 0

, который дает следующие результаты

query result image

У моих товаров может быть много партнеров (со многими-много ассоциации), если они связаны только с одним, у меня нет проблем, но если у одного элемента больше партнеров, возникает вышеупомянутая проблема.Один и тот же элемент выбирается несколько раз, я хочу, чтобы он отображался только один раз, не имеет значения, сколько у них партнеров.

...