Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Нужна помощь с объединением запросов и триггером  [new]
batex
Member

Откуда:
Сообщений: 2
Есть такие таблицы
1 - таблица заявок на товар FK_sales_goods(goods_id, count, date)
2 - таблица товаров sales1(goods_id, name)

Надо составить такиq запрос:
Вывести пять самых популярных товаров. Тут я написал два запроса, первый суммирует заявки по одинаковым товарам
select goods_id, SUM(goods_count) from sales1 group by sales1.goods_id
И второй выводит пять популярных
Select top 5 FK_sales_goods.iid, FK_sales_goods.name, sales1.goods_count from sales1
left join FK_sales_goods ON FK_sales_goods.iid = sales1.goods_id
ORDER BY sales1.goods_count DESC
Как их объединить так, чтобы выводило пять популярных товаров по суммарному количеству заявок по товарам?


И второй вопрос. Написал триггер, который запрещает добавлять товар с приоритетом меньше 1 и больше 9. Получилось вот что:

CREATE TRIGGER trig_1
ON FK_sales_goods
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
if (select FK_sales_goods.priority from FK_sales_goods) < 1
if (select FK_sales_goods.priority from FK_sales_goods) > 9
rollback
print'Error in priority'
END


При запросе
INSERT FK_sales_goods VALUES('goods10',10)
ругается : Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Как заставить триггер работать?
4 апр 12, 20:56    [12367369]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с объединением запросов и триггером  [new]
batex
Member

Откуда:
Сообщений: 2
Ошибся в описании таблиц. Вот верный вариант

batex
Есть такие таблицы
1 - таблица заявок на товар FK_sales_goods(iid, name, priority)
2 - таблица товаров sales1(goods_id, goods_count, date)

Надо составить такиq запрос:
Вывести пять самых популярных товаров. Тут я написал два запроса, первый суммирует заявки по одинаковым товарам
select goods_id, SUM(goods_count) from sales1 group by sales1.goods_id
И второй выводит пять популярных
Select top 5 FK_sales_goods.iid, FK_sales_goods.name, sales1.goods_count from sales1
left join FK_sales_goods ON FK_sales_goods.iid = sales1.goods_id
ORDER BY sales1.goods_count DESC
Как их объединить так, чтобы выводило пять популярных товаров по суммарному количеству заявок по товарам?


И второй вопрос. Написал триггер, который запрещает добавлять товар с приоритетом меньше 1 и больше 9. Получилось вот что:

CREATE TRIGGER trig_1
ON FK_sales_goods
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
if (select FK_sales_goods.priority from FK_sales_goods) < 1
if (select FK_sales_goods.priority from FK_sales_goods) > 9
rollback
print'Error in priority'
END


При запросе
INSERT FK_sales_goods VALUES('goods10',10)
ругается : Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Как заставить триггер работать?
4 апр 12, 20:58    [12367376]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с объединением запросов и триггером  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
batex
При запросе
INSERT FK_sales_goods VALUES('goods10',10)
ругается
Вот у вас написано:
if (запрос) < 1


При этом "запрос" возвращает таблицу.

Что серверу то делать, чего там должно быть " < 1 " ?
4 апр 12, 21:01    [12367388]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь с объединением запросов и триггером  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
batex,

1. Подзапросы
2. Прочитать про триггеры и переписать все чуть более чем полностью, т.к. у вас фигня написана. Да и вообще вам зачем триггер нужен?

А также откройте для себя теги, особенно SRC
4 апр 12, 21:02    [12367390]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить