0

私はやるべきことのリストを持っていて、それを分割したいと思っています。このデータは2つのテーブルにあります

だから私は2つのテーブルを持っています.最初は
テーブル1をすることのリストです.

task 
-----------
job a 
job b
job c
...
job z

表 2は、人々と、彼らが 1 日にできることのリストです。

person | date     | amount 
------- -------- ---------- 
Mike    05/23/12 3
Paul    05/23/12 2
Mike    05/24/12 1
Paul    05/24/12 3
...
Mike    06/01/12 6
Paul    06/01/12 9

だから私が欲しいのは次のようなものを手に入れることです

Order_id| Person  |date     |task
-------- --------- --------- -----------
1        Mike      05/23/12  job a
2        Mike      05/23/12  job b
3        Mike      05/23/12  job c
4        Paul      05/23/12  job d
5        Paul      05/23/12  Job e
6        Mike      05/24/12  job f
7        Paul      05/24/12  job g
...
26       Mike      06/01/12  job z

私はこれについてどうやって行くのか分かりません。私はPostgres 8.4で作業しています

4

1 に答える 1

0

別のテーブルを使用して、1から(最大量)の整数のシーケンスを持つtable3を使用して、クエリを実行できます。

table3のサンプル

seq
-----
1
2
3
4
...
9
10
11
...

クエリのサンプル

select
  sub1.Order_id,
  sub2.Person,
  sub2.date,
  sub1.task
from
(
select
  row_number() over(order by task) as Order_id,
  task
from table1
order by task
) as sub1
inner join
(
select 
  row_number() over(order by table2.date, table2.person) as Order_id,
  table2.person,
  table2.date,
  table2.amount,
  table3.seq
from table2
inner join table3
 on table2.amount >= table3.seq
) as sub2
on sub1.Order_id = sub2.Order_id

などのウィンドウ関数row_number()は、PostgreSQL バージョン 8.4 以降で使用できることに注意してください。

于 2012-05-24T03:30:09.670 に答える