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

Откуда: Армения, Ереван
Сообщений: 101
Добрый день!

Имеются таблица комлектующих


tbl1
id naim nalichie
1 naimen1 -1
2 naimen2 -1
3 naimen3 1
4 naimen4 1
5 naimen5 -1
6 naimen6 -1
7 naimen7 1
8 naimen8 -1

и таблица комплектов, каждый из которых состоит из двух комплектующих из первой таблицы

tbl2
id kid1 kid2 nalichie
1 1 3
2 3 4
3 2 5
4 5 6
5 4 1
6 8 7
7 7 3
8 2 4

как составить запрос для вычисления значений поля nalichie для каждого комплекта из второй таблицы, если оно определяется как произведение полей наличие из первой таблицы соответствующих комплектующих по kid1 и kid2.
3 мар 15, 11:48    [17336251]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ваш вариант запроса покажите ?
3 мар 15, 11:59    [17336352]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
AVRob
как составить запрос для вычисления значений поля nalichie для каждого комплекта из второй таблицы, если оно определяется как произведение полей наличие из первой таблицы соответствующих комплектующих по kid1 и kid2.

Через join ?
3 мар 15, 12:12    [17336459]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
я попробовал так

Update [irtek_web4].[dbo].[tbl2]
set
nalichie=(select nalichie from tbl1 where tbl2.kid1=tbl1.id)*(select nalichie from tbl1 where tbl2.kid2=tbl1.id)

но я полностью не уверен в правильности данного запроса
3 мар 15, 12:18    [17336499]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
вы вообще разницу между select и update знаете ?
3 мар 15, 12:19    [17336510]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
Maxx, наверное.

а с чего такой вопрос?
3 мар 15, 12:23    [17336539]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
AVRob
а с чего такой вопрос?

Потому что непонятно, что вы хотите получить
3 мар 15, 12:24    [17336546]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
Maxx,
в результате приведенного запроса я получил правильные значения для поля nalichie таблицы tbl2


id kid1 kid2 nalichie
1 1 3 -1
2 3 4 1
3 2 5 1
4 5 6 1
5 4 1 -1
6 8 7 -1
7 7 3 1
8 2 4 -1


но все равно я до конца не уверен в правильности запроса
3 мар 15, 12:26    [17336568]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21243
AVRob
вычисления значений поля nalichie для каждого комплекта из второй таблицы, если оно определяется как произведение полей наличие из первой таблицы соответствующих комплектующих по kid1 и kid2.

Наличие, как я понимаю, или имеется, или нет. Значения - +1 и -1 соответственно. Если использовать произведение, то комплект, составленный из двух отсутствующих деталей, в наличии имеется. Это на самом деле так?

AVRob
составить запрос для вычисления значений поля nalichie для каждого комплекта из второй таблицы
А нужно ли при этом учитывать, что деталь, необходимая для комплекта, уже использована для другого комплекта?
3 мар 15, 12:26    [17336570]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
AVRob
в результате приведенного запроса я получил правильные значения для поля nalichie таблицы tbl2

UPDATE не может вывести какой то результат
UPDATE изменяет данные в таблице

AVRob
но все равно я до конца не уверен в правильности запроса

И что вам нужно для уверенности в "я получил правильные значения" ?
3 мар 15, 12:30    [17336593]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
Glory,
ну ясно, что приведенные результаты я получил по команде

SELECT [id]
,[kid1]
,[kid2]
,[nalichie]
FROM Tbl2

а неуверенность в запросе

Update tbl2
set
nalichie=(select nalichie from tbl1 where tbl2.kid1=tbl1.id)*(select nalichie from tbl1 where tbl2.kid2=tbl1.id)

из-за использования tbl2 в условии where в командах select
3 мар 15, 12:40    [17336669]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
AVRob
а неуверенность в запросе

Если не уверены, то напишите сначала запрос, который просто выберет нужные данные
3 мар 15, 12:42    [17336681]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
Glory, Спасибо за ценный совет
3 мар 15, 12:46    [17336702]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
AVRob
Спасибо за ценный совет

Совет соответствует уровню вопроса.
3 мар 15, 12:48    [17336718]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
Glory,

судя по количеству Ваших сообщений Вы опытнее меня и в MSSQL и в форумных делах.

посоветуйте пож-та, как надо было мне правильно поставить вопрос и правильно ли использование tbl2 в условии where в командах select

в запросе

AVRob
Update tbl2
set
nalichie=(select nalichie from tbl1 where tbl2.kid1=tbl1.id)*(select nalichie from tbl1 where tbl2.kid2=tbl1.id)
3 мар 15, 13:00    [17336783]     Ответить | Цитировать Сообщить модератору
 Re: как составить запрос ?  [new]
Glory
Member

Откуда:
Сообщений: 104751
AVRob
посоветуйте пож-та, как надо было мне правильно поставить вопрос и правильно ли использование tbl2 в условии where в командах select

У вас самый тривиальный запрос на соедиение двух таблиц
Напишите его
3 мар 15, 13:11    [17336892]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить