【问题标题】:Subquery Postgres: two tables not directly related子查询 Postgres:两个不直接相关的表
【发布时间】:2021-03-25 12:34:10
【问题描述】:

盘子

plate_id date product_id
1 01-12-2020 101
2 01-12-2020 202
3 02-12-2020 101
4 02-12-2020 202
5 02-12-2020 303

生产

order_id date product_id cost
1001 01-12-2020 101 10.95
1002 01-12-2020 202 19.00
1003 02-12-2020 101 11.50
1004 02-12-2020 202 20.05
1005 02-12-2020 303 17.00

我需要得到的查询结果是:

plate_id cost
4 20.05

它们与pk和fk无关,

每个产品可以有不止一个生产成本。

我想我需要创建一些子查询来始终考虑两列:date 和 product_id

不幸的是,下面的查询给出了错误

SELECT pl.plate_id, pr.cost
FROM plates pl
JOIN (select * from production pr where pr.date=pl.date and pr.product_id=pl.product_id)
WHERE pl.product_id = 4;

【问题讨论】:

  • 为什么是20.05 而不是19.00?您是按最晚日期还是按最高价格订购?

标签: sql postgresql subquery inner-join


【解决方案1】:

您似乎想加入product_iddate

select pl.plate_id, pr.cost
from plates pl
inner join production pr using (product_id, date)
where pl.plate_id = 4

【讨论】:

  • 在我的真实案例中我不得不写:inner join mrp_production pr on (pr.product_id=pp.id, pr.date_planned_start::date=m.date) 但我收到以下错误:参数JOIN/ON 必须是布尔类型,而不是记录类型
  • @kubaSpolsky。所以:inner join mrp_production pr on pr.product_id=pp.id and pr.date_planned_start::date=m.date
猜你喜欢
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
相关资源
最近更新 更多