私は注文とラインテーブルを持っています。各商品の日付ごとの予約はいくつですか?
注文には1行以上の行を付けることができます。
ラインリファレンス製品(購入品)、date_at(あなたがチケットを考えることができる。あなたはこのチケットを使用することができます日付)
create table o (
id integer NOT NULL
);
CREATE TABLE line (
id integer NOT NULL,
order_id integer NOT NULL,
product_id integer NOT NULL,
date_at date,
time_at time,
);
私は日付ごと持っているどのように多くのbookings/reservations
を探しています。 私は今、私は各製品の結果を希望する各日付
select date(t3.date_at), count(*)
from (
select t1.id, date(t2.date_at) as date_at, count(*)
from o t1
inner join line t2 on t1.id = t2.order_id
group by t1.id, date(t2.date_at)) t3
group by date(t3.date_at);
ため(date_at, count)
のリストを取得することができます。
つまり、それぞれのproduct_idが必要です。商品を含む注文(少なくとも1行にproduct_id
が含まれている注文)の(date, count)
のリストを取得したいと考えています。
私は別の{product_id}
でループで次のクエリを実行できますが、私はpostgresのを使用しています良い方法
select date(t3.date_at), count(*)
from (
select t1.id, date(t2.date_at) as date_at, count(*)
from o t1
inner join line t2 on t1.id = t2.order_id
where t2.product_id={product_id}
group by t1.id, date(t2.date_at)) t3
group by date(t3.date_at);
があるかもしれませんね。
テストデータ
insert into o(id)
values
(1);
insert into o(id)
values
(2);
insert into o(id)
values
(3);
insert into line (id, order_id, product_id, date_at)
values
(1, 1, 1, '2017-1-1');
insert into line (id, order_id, product_id, date_at)
values
(2, 1, 1, '2017-1-1');
insert into line (id, order_id, product_id, date_at)
values
(7, 1, 1, '2017-1-1');
insert into line (id, order_id, product_id, date_at)
values
(8, 2, 1, '2017-1-1');
insert into line (id, order_id, product_id, date_at)
values
(5, 2, 2, '2017-1-1');
insert into line (id, order_id, product_id, date_at)
values
(6, 1, 2, '2017-1-1');
insert into line (id, order_id, product_id, date_at)
values
(4, 1, 1, '2017-1-3');
insert into line (id, order_id, product_id, date_at)
values
(3, 3, 2, '2017-1-2');
私はあなたがしたい場合は、私は一度だけ詳細..
select date(t3.date_at), t3.product_id, count(*)
from (
select t1.id, t2.date_at as date_at, t2.product_id as product_id, count(*) as c
from o t1
inner join line t2 on t1.id = t2.order_id
group by t1.id, t2.product_id, date(t2.date_at)) t3
group by t3.product_id, t3.date_at;
うわー、これはうまくいくように思えます。 – eugene