Re: Clean up shop database
От | Rob Sargent |
---|---|
Тема | Re: Clean up shop database |
Дата | |
Msg-id | 9713782b-9c29-2497-be30-6dd1af0d550c@gmail.com обсуждение исходный текст |
Ответ на | Clean up shop database (Richard Klingler <richard@klingler.net>) |
Ответы |
Re: Clean up shop database
|
Список | pgsql-sql |
On 1/19/22 04:03, Richard Klingler wrote: > Good morning (o; > > > I am in the process of migrating an online shop to another system and > therefore > also want to clean out products that haven't been re-stocked for a time. > > Now this simple query returns all order ids younger than 750 days: > > select orderid, orderdate from orders > where (now() - orderdate) < INTERVAL '1000 days' > order by orderdate asc > > So it shows me orders beginning from January 1st 2020...all fine. > > > Now I want to list all products which stock is 0 and have only been > ordered > before those 750 days..so I use the above query in wrap it in the select > with a "not in": > > select p.productid as id, p.name_de as name > from product p, orderitems i, orders > where p.productid = i.orderitems2productid > and i.orderitems2orderid not in (select orderid from orders where > (now() - orderdate) < INTERVAL '750 days') > and p.pieces < 1 > and p.active = 't' > group by id > order by id desc something like this? select p.productid as id, p.name_de as name from product p join orderitems i on p.productid = i.orderitems2productid join orders o on i.orderid = o.orderid where o.orderdate < 'January 1st 2020' and p.pieces < 1 and p.active = 't' group by id order by id desc > > > Besides that this query takes over 70 seconds...it also returns > products that have been ordered after January 1st 2020. > > So somehow this "not in" doesn't work as I am expecting it (o; > > > thanks in advance > richard > > >
В списке pgsql-sql по дате отправления: