【发布时间】:2021-03-12 18:04:48
【问题描述】:
开发者们晚上好!
几天后,我正在处理一个问题 - 也许您可以帮助我。 例如,我从我的数据库中取出两张表:
产品
| id | name | type|
| 1 | product-1 | base |
| 2 | product-1a | modif |
| 3 | product-1b | modif |
| 4 | product-2 | base |
| 5 | product-2a | modif |
PRODUCT_SOURCE
| id | product_id | store_id | quantity |
| 1 | 2 | 1 | 0 |
| 2 | 2 | 2 | 5 |
| 3 | 2 | 3 | 3 |
| 4 | 3 | 1 | 7 |
| 5 | 3 | 3 | 0 |
| 6 | 5 | 3 | 1 |
在表 PRODUCT_SOURCE 中,仅包含类型为“modif”的产品。 所以我需要从表 PRODUCTS 中获取所有产品 数量形式为 PRODUCT_SOURCE 不显示其他商店的数量(不重复),但可以按如下所示进行排序:
| id | name | type | quantity |
| 3 | product-1b | modif | 7 |
| 2 | product-1a | modif | 0 |
| 6 | product-2a | modif | 0 |
| 1 | product-1 | base | - |
| 4 | product-2 | base | - |
我尝试过 INNER / OUTER JOIN,GROUP BY 甚至尝试将 SELECT FROM 放在 ORDER BY 子句中(我相信这是可能的......)
附:我有嵌套查询。比如:
SELECT * FROM (SELECT sp.id, sp.name, sp.type, vat.amount, source.shop_id, source.quantity, sp.created_at FROM public."product" sp FULL OUTER JOIN public."product_source" as source on sp.id = source.product_id INNER JOIN public."vat" as vat on sp.vat_id = vat.id WHERE sp.account_id = 1 AND source.shop_id = 1)AS filtered ORDER BY filtered.quantity desc
谢谢! 我将不胜感激。
【问题讨论】:
-
如果您的查询确实是在产生错误,那么它们是什么
-
没有错误 - *with LEFT JOIN - 它提供所有条目 - 来自表 1 和表 2(这不是我想要的,因为我需要所有表 1 和表 2 中的那些store_id 1 * with WHERE s.store_id=1 只给出表 2 中 shop_id 为 1 的人
-
我有嵌套查询。像这样的东西总是更好地向我们展示您真正拥有的查询,而不是伪查询
-
你是如何运行这个查询的?
-
如果你把它放在问题中会更好。没有人可以阅读提问者下方的通讯链接中的代码。用户EDIT