我有以下表格:stores,items,promotions,promotion_stores,promotion_items。
我的目标是返回对象的JSON列表,其中包含特定存储的以下数据(通过stores.id):
promotions)promotions)promotion_items链接到此促销的项目列表。这些桌子看起来如下:
stores: id, name
items: id, store_id, price, other metadata..
promotion_stores: store_id,site_id,promotion_id
promotion_items: promotion_id, item_id
promotions: id, discounted_price, description到目前为止,我所做的--效率很低--使用了3个查询:
SELECT promotion_id FROM promotion_stores WHERE store_id = ${branch}promotion_items查询所有项(另一个查询)我的目标是:对DB进行一次查询,效率更高,无需SQL代码,并根据结果构建一个JSON。
我怎么能这么做?
发布于 2022-02-20 17:53:29
您必须在一个查询中将表连接在一起,如下所示:
SELECT to_jsonb(p.*) || to_jsonb(i.*)
FROM promotion_stores AS ps
INNER JOIN promotions AS p
ON p.id = ps.promotion_id
INNER JOIN promotion_items AS pi
ON pi.promotion_id = p.id
INNER JOIN items AS i
ON i.id = pi.item_id
AND i.store_id = ps.store_id
WHERE ps.store_id = ${branch} ;请参阅[医]小提琴中的测试结果。
https://stackoverflow.com/questions/71196629
复制相似问题