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

Откуда:
Сообщений: 12
И так, имеем 2 таблицы с одинаковыми колонками, но разным кол-вом полей и разными значениями в полях, 1-я 829 полей, 2-я 750. Из них создана 3-я итоговая таблица, в которой 729 полей. Вопрос как найти и добавить в 3-ю таблицу 100 полей из первой, и 21 поле из 2-й таблиц, которые не добавились? Желательно скрипт для SQL Server а не MYSQL .
29 ноя 12, 10:52    [13547700]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Гузы
Guest
Sergey26RUS
И так, имеем 2 таблицы с одинаковыми колонками, но разным кол-вом полей и разными значениями в полях, 1-я 829 полей, 2-я 750. Из них создана 3-я итоговая таблица, в которой 729 полей. Вопрос как найти и добавить в 3-ю таблицу 100 полей из первой, и 21 поле из 2-й таблиц, которые не добавились? Желательно скрипт для SQL Server а не MYSQL .

Да ни вопрос! В огороде бузина, а у Киеве - дядька. (Повторять до просветления)
29 ноя 12, 10:57    [13547723]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Добрый Э - Эх
Guest
Сам понял что спросил? поле и колонка, если что, синонимы. Или ты поля-колонки со строками попутал, или объясни на картинках что тебе надо...

Ну и про MySQL вообще непонятно к чему сказано, ибо вопрос запощен на MS SQL Server-ной ветке форума
29 ноя 12, 10:58    [13547730]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Добрый Э - Эх
Guest
а вообще, если хрустальный шар меня не обманывает - EXCEPT + UNION ALL + INSERT тебе в помощь
29 ноя 12, 11:01    [13547746]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
вот тут есть информация по этому поводу
29 ноя 12, 11:01    [13547747]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Sergey26RUS
Member

Откуда:
Сообщений: 12
stavgreengo спасибо но не то.
По поводу полей, сори, имел ввиду строки.
Приблизительно так, есть таблица 1
knp| kfs| istfin| zn10
всего 829 строк
и есть таблица 2
knp| kfs| istfin| zn11
750 строк
получилась таблица 3
knp| kfs| istfin| zn10| zn11| zn(общая)
729 строк
так вот, нужно добавить из таблиц 1 и 2 недостающие строки в таблицу 3, из 1-й 100 строк из 2-й 21 строка. Я незнаю как еще обьяснить проблему=(
29 ноя 12, 11:22    [13547843]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Sergey26RUS
Member

Откуда:
Сообщений: 12
Добрый Э - Эх
а вообще, если хрустальный шар меня не обманывает - EXCEPT + UNION ALL + INSERT тебе в помощь

Да будет вам тебе известно.- Операторы UNION, EXCEPT и INTERSECT нельзя использовать вместе с инструкцией INSERT. From http://msdn.microsoft.com/ru-ru/library/ms191523(v=sql.105).aspx
29 ноя 12, 11:48    [13548025]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
invm
Member

Откуда: Москва
Сообщений: 9409
Sergey26RUS
Я незнаю как еще обьяснить проблему=(
Гуманитарий?
Попробую угадать:
insert into Таблица3
 (knp, kfs, istfin, zn10, zn11, [zn(общая)])
 select
  t.knp, t.kfs, t.istfin, t.zn10, 0, t.zn10
 from
  Таблица1 t
 where
  not exists(select * from Таблица3 where knp = t.knp and kfs = t.kfs and istfin = t.istfin)
Для таблицы 2 аналогично.
29 ноя 12, 11:51    [13548053]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
так зашёл
Guest
Sergey26RUS
Добрый Э - Эх
а вообще, если хрустальный шар меня не обманывает - EXCEPT + UNION ALL + INSERT тебе в помощь

Да будет вам тебе известно.- Операторы UNION, EXCEPT и INTERSECT нельзя использовать вместе с инструкцией INSERT. From http://msdn.microsoft.com/ru-ru/library/ms191523(v=sql.105).aspx



Да что вы говорите?:)


DECLARE
  @Table TABLE(I INT)
  
INSERT @Table
SELECT * FROM
(
  SELECT 1 I
  UNION ALL SELECT 2  
  UNION ALL SELECT 3  
  UNION ALL SELECT 4  
  UNION ALL SELECT 5  
)T

SELECT * FROM @Table
29 ноя 12, 11:59    [13548120]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
так зашёл,

можно и без подзапроса даже.

по ссылке: "Операторы UNION, EXCEPT и INTERSECT нельзя использовать вместе с инструкцией INSERT."
в оригинале: "UNION, EXCEPT and INTERSECT can be used within an INSERT statement."

рукалицо.жпг
29 ноя 12, 12:16    [13548265]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Sergey26RUS
Member

Откуда:
Сообщений: 12
так зашёл
Sergey26RUS
пропущено...

Да будет вам тебе известно.- Операторы UNION, EXCEPT и INTERSECT нельзя использовать вместе с инструкцией INSERT. From http://msdn.microsoft.com/ru-ru/library/ms191523(v=sql.105).aspx



Да что вы говорите?:)


DECLARE
  @Table TABLE(I INT)
  
INSERT @Table
SELECT * FROM
(
  SELECT 1 I
  UNION ALL SELECT 2  
  UNION ALL SELECT 3  
  UNION ALL SELECT 4  
  UNION ALL SELECT 5  
)T

SELECT * FROM @Table

Нет, очень много добавилось, мне нужна именно 121 строка из двух таблиц, которые не добавились в третью таблицу.
Может можно как то сравнить 1-ю таблицу с 3-й и 2-ю таблицу с 3-й чтобы увидеть какие строки не добавились и потом добавить в 3-ю таблицу?
29 ноя 12, 12:21    [13548305]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Sergey26RUS
Member

Откуда:
Сообщений: 12
invm
Sergey26RUS
Я незнаю как еще обьяснить проблему=(
Гуманитарий?
Попробую угадать:
insert into Таблица3
 (knp, kfs, istfin, zn10, zn11, [zn(общая)])
 select
  t.knp, t.kfs, t.istfin, t.zn10, 0, t.zn10
 from
  Таблица1 t
 where
  not exists(select * from Таблица3 where knp = t.knp and kfs = t.kfs and istfin = t.istfin)
Для таблицы 2 аналогично.

СОРРИ не того цитировал
Нет, очень много добавилось, мне нужна именно 121 строка из двух таблиц, которые не добавились в третью таблицу.
Может можно как то сравнить 1-ю таблицу с 3-й и 2-ю таблицу с 3-й чтобы увидеть какие строки не добавились и потом добавить в 3-ю таблицу?
29 ноя 12, 12:22    [13548319]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sergey26RUS
Может можно как то сравнить 1-ю таблицу с 3-й и 2-ю таблицу с 3-й чтобы увидеть какие строки не добавились и потом добавить в 3-ю таблицу?

Ну так написали уже для Таблица1 и Таблица3
Напишите по аналогии для Таблица2 и Таблица3
29 ноя 12, 12:26    [13548348]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Sergey26RUS
Member

Откуда:
Сообщений: 12
Glory
Sergey26RUS
Может можно как то сравнить 1-ю таблицу с 3-й и 2-ю таблицу с 3-й чтобы увидеть какие строки не добавились и потом добавить в 3-ю таблицу?

Ну так написали уже для Таблица1 и Таблица3
Напишите по аналогии для Таблица2 и Таблица3

да господи... из 1-й таблицы должно добавиться ровно 100 строк, а из второй 21, а по тому скрипту их получилось около 700 из 2-х таблиц, я незнаю почему...
29 ноя 12, 12:32    [13548416]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
так зашёл
Guest
daw
так зашёл,

можно и без подзапроса даже.

по ссылке: "Операторы UNION, EXCEPT и INTERSECT нельзя использовать вместе с инструкцией INSERT."
в оригинале: "UNION, EXCEPT and INTERSECT can be used within an INSERT statement."

рукалицо.жпг


да можно, что это МСДН так?:)

--Операторы UNION, EXCEPT и INTERSECT нельзя использовать вместе с инструкцией INSERT

DECLARE
  @Table TABLE(I INT)
  
INSERT @Table

   SELECT * FROM (VALUES(11),(12),(13))X(X) 
   EXCEPT 
   SELECT * FROM (VALUES(12),(13))X(X)

 UNION 

   SELECT * FROM (VALUES(21),(22),(23))X(X) 
   INTERSECT 
   SELECT * FROM (VALUES(21),(25))X(X)

SELECT * FROM @Table


Работает как и ожидается. Хотя насчет порядка я не уверен, тут просто он не важен. Я бы для прозрачности в подзапросы засунул.
29 ноя 12, 12:35    [13548456]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sergey26RUS
з 1-й таблицы должно добавиться

Вы это откуда знаете ?
Вы лично просмотрели все записи и сравнили вручную ?

Sergey26RUS
а по тому скрипту их получилось около 700 из 2-х таблиц, я незнаю почему...

Потому что вот сюда "where knp = t.knp and kfs = t.kfs and istfin = t.istfin" вы должны написать ваши "секретные условия", по которым вы считаете, что записи "должны или не должны"
29 ноя 12, 12:35    [13548457]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Sergey26RUS
Member

Откуда:
Сообщений: 12
Glory
Sergey26RUS
з 1-й таблицы должно добавиться

Вы это откуда знаете ?
Вы лично просмотрели все записи и сравнили вручную ?

Sergey26RUS
а по тому скрипту их получилось около 700 из 2-х таблиц, я незнаю почему...

Потому что вот сюда "where knp = t.knp and kfs = t.kfs and istfin = t.istfin" вы должны написать ваши "секретные условия", по которым вы считаете, что записи "должны или не должны"

все было правильно вписано и я знаю сколько записей должно добавиться, в 3-й таблице 729 записей, в 1-й таблице их 829, с меня просят найти эти 100 записей, а с 2-й таблицы где 750 записей, найти 21 и все эти записи добавить в 3-ю таблицу.
29 ноя 12, 12:41    [13548523]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
так зашёл
Guest
Sergey26RUS
все было правильно вписано и я знаю сколько записей должно добавиться, в 3-й таблице 729 записей, в 1-й таблице их 829, с меня просят найти эти 100 записей, а с 2-й таблицы где 750 записей, найти 21 и все эти записи добавить в 3-ю таблицу.


Вам пытаются сказать, что Вы не четко сформулировали условия.
Не понятно по какому принципу какие записи должны вставится, а какие нет.
29 ноя 12, 12:45    [13548567]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Sergey26RUS
Member

Откуда:
Сообщений: 12
напишу подробно
1 таблица
|god|knp|kfs|istfin|okato|zn_2010|
829 строк
2 таблица
|god|knp|kfs|istfin|okato|zn_2011|
750 строк
3 таблица колонки god нету
|knp|kfs|istfin|okato|zn_10|zn_11|zn|
729 строк

с меня требуют 100 из 1-й, 21 из 2-й таблиц найти и добавить в 3-ю, конечную таблицу. подробней некуда.
29 ноя 12, 12:46    [13548575]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sergey26RUS
и я знаю сколько записей должно добавиться,

И каким запросом вы это узнали ?
29 ноя 12, 12:47    [13548590]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sergey26RUS
с меня требуют 100

100 любых ?
29 ноя 12, 12:48    [13548592]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
так зашёл
Guest
Sergey26RUS
в 3-й таблице 729 записей, в 1-й таблице их 829, с меня просят найти эти 100 записей, а с 2-й таблицы где 750 записей, найти 21 и все эти записи добавить в 3-ю таблицу.


INSERT Table3
SELECT TOP 100 * FROM Table1
UNION ALL
SELECT TOP 21 * FROM Table2

:)
29 ноя 12, 12:49    [13548601]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Sergey26RUS
Member

Откуда:
Сообщений: 12
так зашёл
Sergey26RUS
все было правильно вписано и я знаю сколько записей должно добавиться, в 3-й таблице 729 записей, в 1-й таблице их 829, с меня просят найти эти 100 записей, а с 2-й таблицы где 750 записей, найти 21 и все эти записи добавить в 3-ю таблицу.


Вам пытаются сказать, что Вы не четко сформулировали условия.
Не понятно по какому принципу какие записи должны вставится, а какие нет.

условия такие, что из исходных строк например 829, у меня получилась таблица с 729 строками, вот и спрашивают, где еще 100, у меня все правильно, но для отсчета нужны все строки, даже те которые не попали в 3 таблицу
29 ноя 12, 12:49    [13548605]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
Glory
Member

Откуда:
Сообщений: 104760
Sergey26RUS
вот и спрашивают, где еще 100,

Где, где

Sergey26RUS
но для отсчета нужны все строки, даже те которые не попали в 3 таблицу

Что еще вам неясно в приведенных запросах ?
29 ноя 12, 12:50    [13548618]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с таблицами  [new]
invm
Member

Откуда: Москва
Сообщений: 9409
Точно гуманитарий...
29 ноя 12, 12:51    [13548625]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить