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

Откуда:
Сообщений: 41
Добрый вечер форумчане. Помогите пожалуйста со следующим вопросом.
у меня есть таблица lis_inv с полями id,nam_inv,inv_num,ser_num,type_inv,count_inv,price,sum_inv.
и таблица inv_ev с полями id,id_lis_inv,id_usr_post,id_usr_get,korp_post,korp_get,num_cab_post,num_cab_get,date_get,date_post.
не получается сделать такой запрос при котором при вводе данных в первую таблицу ее счетчик с номером отправлялся во вторую таблицу то есть id из первой таблицы записывалось в поле id_lis_inv
За ранее огромное спасибо:)
5 фев 14, 10:43    [15520831]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
user921227
не получается сделать такой запрос при котором при вводе данных в первую таблицу ее счетчик с номером отправлялся во вторую таблицу то есть id из первой таблицы записывалось в поле id_lis_inv

insert lis_inv ... output ... into inv_ev
5 фев 14, 10:46    [15520843]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31485
user921227
не получается сделать такой запрос при котором при вводе данных в первую таблицу ее счетчик с номером отправлялся во вторую таблицу
Запросом нельзя "отправлять данные в таблицу"

Вставка данных в таблицы делается командой INSERT

Потратьте побольше времени на формулировку задачи. Опишите таблицы, примеры данных, что нужно получить в итоге. Не ограничивайтесь одной длинной фразой.
5 фев 14, 10:48    [15520858]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
SET IDENTITY_INSERT dbo.lis_inv.id ON
INSERT dbo.lis_inv
OUTPUT INSERTED.id
INTO dbo.inv_ev
insert into dbo.lis_inv(nam_inv,inv_num,ser_num,type_inv,count_inv,price,sum_inv) values('Монитор', '122334','344556','Основные средства','45','500','22500');
INSERT dbo.lis_inv
OUTPUT INSERTED.id
INTO dbo.inv_ev(id_lis_inv,id_usr_post,id_usr_get,korp_post,korp_get,num_cab_post,num_cab_get,date_post,date_get)
values ('','23','','2','','301','','2014-11-26')

вот что получается и вот ошибка которая выводится
Сообщение 8101, уровень 16, состояние 1, строка 2
Значение столбца идентификаторов в таблице "dbo.lis_inv" может указываться явно только при использовании списка столбцов и когда IDENTITY_INSERT установлен в ON.
6 фев 14, 08:37    [15526165]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
есть три таблицы users(список пользователей), list_inv(справочник инвентаря), inv_ev(движение инвентаря) мысль такова пользователь авторизуется и начинает забивать в базу инвентарь помимо того что он вносит данные в справочик list_inv здесь же данные отправляются в таблицу inv_ev но поля отправителя инвентаря такие как дата отправления отправитель корпус кабинет отправителя остаются пустыми (так как отправителем является бухгалтерия и т.п.) затем будет еще кнопка перемещения инвентаря от одного пользователя к другому
6 фев 14, 09:03    [15526289]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
спасибо за ответы но я начинающий тяжело разбераюсь хотел бы более подробных ответов
6 фев 14, 09:04    [15526294]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
user921227
хотел бы более подробных ответов

Задайте более подробные вопросы
6 фев 14, 10:15    [15526719]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
почему выходит ошибка при формировании этого запроса
6 фев 14, 10:22    [15526763]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
user921227,
вот что получается и вот ошибка которая выводится
Сообщение 8101, уровень 16, состояние 1, строка 2
Значение столбца идентификаторов в таблице "dbo.lis_inv" может указываться явно только при использовании списка столбцов и когда IDENTITY_INSERT установлен в O
6 фев 14, 10:22    [15526770]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
user921227
почему выходит ошибка при формировании этого запроса

Потому что
Значение столбца идентификаторов в таблице "dbo.lis_inv" может указываться явно только при использовании списка столбцов и когда IDENTITY_INSERT установлен в ON.
6 фев 14, 10:23    [15526773]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
SQL Fiddle][1]

**MS SQL Server 2012 Schema Setup**:


/****** Object: Table [dbo].[inv_ev] Script Date: 06.02.2014 13:17:08 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[inv_ev](
[id] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[id_lis_inv] [numeric](18, 0) NOT NULL,
[id_usr_post] [int] NULL,
[id_usr_get] [int] NOT NULL,
[korp_post] [int] NULL,
[korp_get] [int] NOT NULL,
[num_cab_post] [int] NULL,
[num_cab_get] [int] NOT NULL,
[date_post] [date] NULL,
[date_get] [date] NOT NULL
) ON [PRIMARY]

GO
/****** Object: Table [dbo].[lis_inv] Script Date: 06.02.2014 13:15:23 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[lis_inv](
[id] [numeric](18, 0) IDENTITY(1,1) NOT NULL,
[nam_inv] [nvarchar](300) NOT NULL,
[inv_num] [int] NOT NULL,
[ser_num] [int] NOT NULL,
[type_inv] [nvarchar](50) NOT NULL,
[count_inv] [int] NOT NULL,
[price] [int] NOT NULL,
[sum_inv] [int] NOT NULL
) ON [PRIMARY]
6 фев 14, 11:20    [15527127]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
мне нужно с полем id_lis_inv что нибудь сделать ? что бы этой ошибки не было
6 фев 14, 11:25    [15527158]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
user921227
мне нужно с полем id_lis_inv что нибудь сделать ? что бы этой ошибки не было

Не нужно
6 фев 14, 11:27    [15527169]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
user921227
мне нужно с полем id_lis_inv что нибудь сделать ? что бы этой ошибки не было


да напишите вы уже:

INSERT dbo.lis_inv (СПИСОК ПОЛЕЙ)
6 фев 14, 11:29    [15527182]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
http://sqlfiddle.com/#!6/832c7/2/0
6 фев 14, 11:32    [15527200]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
user921227
http://sqlfiddle.com/#!6/832c7/2/0

И долго вы собираетесь постить одно и тоже сообщение об ошибке ?
6 фев 14, 11:33    [15527203]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
пожалуйста помогите решить эту проблему и поподробнее где что я ни так делаю
6 фев 14, 11:41    [15527250]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
user921227
пожалуйста помогите решить эту проблему и поподробнее где что я ни так делаю

1. Вы зачем то пытаетесь добавить значение в поле IDENTITY.
Зачем вы это делаете, только вы и знаете

2. Вам уже сказали, что надо указывайте список полей для каждой(!) инструкции INSERT

3. OUTPUT INSERTED.id
INTO dbo.inv_ev(id_lis_inv,id_usr_post,id_usr_get,korp_post,korp_get,num_cab_post,num_cab_get,date_post,date_get)

как вы тут собрались одно поле INSERTED.id добавить в десяток других полей опять же только вам известно

4. Научитесь сначала простой одиночный INSERT составлять. Почему каждый "но я начинающий тяжело разбераюсь" сразу пытается разбираться с сложных запросов, а не с простых ?
6 фев 14, 11:47    [15527297]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
user921227
пожалуйста помогите решить эту проблему и поподробнее где что я ни так делаю


insert into dbo.lis_inv( список полей ) 
output inserted.id, список значений  
into dbo.inv_ev( список полей )
values( список значений );
6 фев 14, 11:47    [15527298]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
спасибо за ответы но разобраться так и не смог пошел по другому пути при помощи select
7 фев 14, 11:12    [15533046]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
можно еще вопрос как сделать чтобы работал он чет не работает select from .... order by ... desc limit 1
7 фев 14, 11:16    [15533062]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
TOP (1)
7 фев 14, 11:27    [15533157]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
спасибо получилось
7 фев 14, 11:49    [15533349]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
как можно сделать чтобы insert into values забивал данные по выбранному id заранее спасибо
7 фев 14, 11:53    [15533381]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
where id = ваш ид
7 фев 14, 11:58    [15533426]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
пробывал но к insert into нельзя использовать where или как в предыдущем запросе в insert into(?тут все поля забиваемой табллицы) select(?тут все как в предыдущем запросе) from where values(?тут значения) так можно ?
7 фев 14, 12:08    [15533517]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
пробывал но к insert into нельзя использовать where или как в предыдущем запросе в insert into(?тут все поля забиваемой табллицы) select(?тут все как в предыдущем запросе) from where values(?тут значения) так можно ?
7 фев 14, 12:09    [15533525]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
insert into
select
from 
where

начинайте читать документацию
7 фев 14, 12:16    [15533588]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
baracs
Member

Откуда: Москва
Сообщений: 7206
user921227
как можно сделать чтобы insert into values забивал данные по выбранному id заранее спасибо
Есть такое ощущение, что вам нужен UPDATE...
7 фев 14, 12:20    [15533610]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
спасибо большое наконец-то получилось вот он рабочий вариант
insert into lis_inv(nam_inv,inv_num,ser_num,type_inv,count_inv,price,sum_inv) values('Системный блок','1221','2222','Основное','20','50','1000')
insert into inv_ev(id_lis_inv,id_usr_post,id_usr_get,korp_post,korp_get,num_cab_post,num_cab_get,date_post,date_get)
select top(1) id,'123','231','456','','','','','' from lis_inv order by dbo.lis_inv.id desc
7 фев 14, 12:41    [15533786]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Glory
Member

Откуда:
Сообщений: 104760
user921227
спасибо большое наконец-то получилось вот он рабочий вариант

Офигеть
insert into lis_inv(nam_inv,inv_num,ser_num,type_inv,count_inv,price,sum_inv) values('Системный блок','1221','2222','Основное','20','50','1000')
insert into inv_ev(id_lis_inv,id_usr_post,id_usr_get,korp_post,korp_get,num_cab_post,num_cab_get,date_post,date_get)
select SCOPE_IDENTITY(), '123','231','456','','','','','' 
7 фев 14, 12:43    [15533805]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
user921227
спасибо большое наконец-то получилось вот он рабочий вариант
insert into lis_inv(nam_inv,inv_num,ser_num,type_inv,count_inv,price,sum_inv) values('Системный блок','1221','2222','Основное','20','50','1000')
insert into inv_ev(id_lis_inv,id_usr_post,id_usr_get,korp_post,korp_get,num_cab_post,num_cab_get,date_post,date_get)
select top(1) id,'123','231','456','','','','','' from lis_inv order by dbo.lis_inv.id desc


так, а чем это не устроило: 15527298
7 фев 14, 13:16    [15534099]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
сам в шоке неделю бился с этим вопросам зато столько нового узнал и старое вспомнил sql проходили один семестр на третьем курсе сейчас на четвертом на практике задание получил вот и парюсь теперь мне еще надо Delphi sqltext это прописать спасибо большое всем кто отвечал и тем кто не отвечал
7 фев 14, 13:32    [15534260]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

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

спасибо но я так и не понял эту схему
7 фев 14, 13:52    [15534423]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
user921227, список полей и список значений я понял а вот два списка полей и два списка значений что то не понял
7 фев 14, 13:55    [15534454]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
user921227
спасибо но я так и не понял эту схему


что из этого не понятно:

insert into dbo.lis_inv( список полей ) 
output inserted.id, список значений  
into dbo.inv_ev( список полей )
values( список значений );



insert into dbo.lis_inv( nam_inv,inv_num,ser_num,type_inv,count_inv,price,sum_inv ) 
output inserted.id, '123','231','456','','','','',''  
into dbo.inv_ev( id_lis_inv,id_usr_post,id_usr_get,korp_post,korp_get,num_cab_post,num_cab_get,date_post,date_get )
values( 'Системный блок','1221','2222','Основное','20','50','1000' );
7 фев 14, 13:56    [15534455]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
Knyazev Alexey,

вот оно как а я думал что работа идет с одной таблицей из второй просто одно значение забивается вот блин спасибо
7 фев 14, 13:59    [15534482]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
user921227
Member

Откуда:
Сообщений: 41
http://msdn.microsoft.com/ru-ru/library/ms174335.aspx значит не правильно читал документацию здесь
7 фев 14, 14:02    [15534497]     Ответить | Цитировать Сообщить модератору
 Re: sql запрос  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
user921227
вот оно как а я думал что работа идет с одной таблицей из второй просто одно значение забивается вот блин спасибо


а в Хелпе всё подробно расписано
7 фев 14, 14:02    [15534500]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить