我有这样的查询:
select product_code,
count(foo.container_id) as "quantity_of_containers",
max((trunc(foo.update_date - foo.creation_date))) as "max_days"
from product
inner join stock on stock.product_id = product.product_id
inner join (
select arch.container_id,
arch.creation_date,
arch.update_date
from arch
union all
select
container.container_id,
container.creation_date,
container.update_date
from container) foo on stock.container_id = foo.container_id
group by product_code
order by "max_days" desc
问题是此查询出了什么问题,当我运行它时,似乎还可以,但是经过进一步检查,看来只有容器中的记录在那里,由于某种原因,拱表中没有单个记录。是否存在使用相同逻辑编写此查询的不同方法?我需要从arch和container中获取记录,因为一个表是存档表,另一个是当前表。在容器和arch上结合两个独立查询的方法也正在工作,但我正在寻找更快的东西。
@edit:
我正在发送一些示例数据,以使我的意思更加清楚。
+---------------+----------+----------+
| product_code | quantity | max_days |
+---------------+----------+----------+
| 5999990024965 | 345 | 85 |
| 5999990027614 | 326 | 81 |
| 5999990023753 | 87 | 77 |
+---------------+----------+----------+
拱表中的数据
+---------------+----------+----------+
| product_code | quantity | max_days |
+---------------+----------+----------+
| 5999990082415 | 11 | 84 |
| 5999990059615 | 2 | 58 |
| 5999990023470 | 1 | 41 |
+---------------+----------+----------+
容器表中的数据。
但是,当我运行查询时,我粘贴到了这里,我只从容器表中获取记录,
是的,stock.container_id确实与foo.container_ids(拱形和容器)匹配
答案 0 :(得分:2)
这不是答案,但是评论太久了。
运行以下查询会得到什么?
select *
from product
inner join stock on stock.product_id = product.product_id
inner join (
select arch.container_id,
arch.creation_date,
arch.update_date,
'arch' qry
from arch
union all
select
container.container_id,
container.creation_date,
container.update_date,
'container' qry
from container) foo on stock.container_id = foo.container_id
where foo.qry = 'arch';
答案 1 :(得分:1)
真的很抱歉,但似乎原因是软件错误?服务器重新启动后,查询提供了所需的数据。谢谢大家的宝贵时间,看来第一个查询实际上是正确的。
真的很抱歉,抽出宝贵的时间,谢谢大家。