Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Удаление всез записей за исключением последних 5 (любая константа) из связанных таблиц  [new]
TheOne
Member

Откуда:
Сообщений: 249
Добрый день,

У меня есть 3 таблицы:

CREATE TABLE  Customer
        (ID integer NOT NULL PRIMARY KEY);

CREATE TABLE  Order
        (ID INTEGER NOT NULL PRIMARY KEY,
         CustomerID INTEGER NOT NULL,
         DatePlaced DATETIME NOT NULL,
         FOREIGN KEY CustomerID REFERENCES Country (ID));

CREATE TABLE  OrderItem
        (ID INTEGER NOT NULL PRIMARY KEY,
         OrderID INTEGER NOT NULL,
         FOREIGN KEY OrderID REFERENCES Order (ID));


У каждого Customer есть множесто Order и у каждого Order есть множество OderItem. Мне нужно для каждого Customer удалить все записи из Order (и соответственно из OrderDetail) за исклчением последних 5 (ORDER BY DatePlaced DESC). Т.е. мне нужно сохранять историю только последних 5 заказов для каждого Customer.

Спасибо
9 сен 13, 01:04    [14811696]     Ответить | Цитировать Сообщить модератору
 Re: Удаление всез записей за исключением последних 5 (любая константа) из связанных таблиц  [new]
SERG1257
Member

Откуда:
Сообщений: 2827
Таблица для ваших последних заказов
select * from
(select order_id,
row_number() over(partition by customer_id order by DatePlaced desc) as rn
from orders) as t
where rn<=5
либо засуньте ее во временную таблицу
либо используйте ее как подзапрос
9 сен 13, 03:52    [14811830]     Ответить | Цитировать Сообщить модератору
 Re: Удаление всез записей за исключением последних 5 (любая константа) из связанных таблиц  [new]
TheOne
Member

Откуда:
Сообщений: 249
SERG1257,

Все отлично работает!

Спасибо
14 сен 13, 23:12    [14840539]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить