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

Откуда:
Сообщений: 660
Привет
Подскажите как сделать вот такой запрос
есть 2 таблици
в одной есть поле aaa и вторая таблица с полем bbb
bbb с уникальным кластеным индексом
нужно встаить из ааа все новые уникальные значения которых нет в bbb
например
aaa bbb
1 1
2 2
3 3
4
5
1
2
3
4
5

нужно чтобы после запроса в bbb было 12345
8 авг 11, 12:04    [11084730]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
из ааа все новые уникальные значения которых нет в bbb

Т.е. вы не можете написать select, который сравнивает две таблицы ?
8 авг 11, 12:06    [11084749]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Alexander_fx
Member

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

не могу потому и прошу
8 авг 11, 12:17    [11084861]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
kDnZP
Member [заблокирован]

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

не могу потому и прошу

А тестовые данные подготовить можете? Если нет, то вас спасут - дистинкт по таблице "ааа", лефт джойн к полученному таблицы "ббб", фильтр по is null, вставка итога в "ббб".
8 авг 11, 12:25    [11084937]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
Glory,

не могу потому и прошу

Читать про EXCEPT/INTERSECT
8 авг 11, 12:26    [11084955]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
... и про MERGE
8 авг 11, 12:28    [11084968]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
kDnZP
Member [заблокирован]

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

не могу потому и прошу

Читать про EXCEPT/INTERSECT

+ озвучить версию сервера
8 авг 11, 12:28    [11084970]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
kDnZP,
sql server 2005

поиском нашел
SELECT ip FROM T1
UNION ALL
SELECT ip FROM T2
EXCEPT
SELECT ip FROM T1
INTERSECT
SELECT ip FROM T2;

вроде выдает то что надо - подскажите как заставить вставиться эти данные во вторую таблицу
8 авг 11, 12:58    [11085237]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
подскажите как заставить вставиться эти данные во вторую таблицу

Узнать о существовании команды INSERT ?
8 авг 11, 12:59    [11085244]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Как-то так, наверно? 6521780
Тема-то - боян!
8 авг 11, 13:06    [11085306]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Alexander_fx
Member

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

вопрос в том как вы нашли этот боян
название топика не информативно или мне надо было перечитать все топики с 2008 года?
хорошо дергать поиск когда знаеш что искать
8 авг 11, 13:16    [11085352]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Glory
Member

Откуда:
Сообщений: 104751
Alexander_fx
хорошо дергать поиск когда знаеш что искать

Команда INSERT есть базовая команда
Как вы до этого добавляли данные в таблицы ?
8 авг 11, 13:18    [11085361]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Alexander_fx
iap,

вопрос в том как вы нашли этот боян
https://www.sql.ru/forum/actualsearch.aspx?search=SELECT+UNION+EXCEPT&sin=0&bid=1&a=iap&ma=2&dt=-1&s=1&so=1

Я ж помню, что писал что-то подобное...
8 авг 11, 13:22    [11085380]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
подскажите а как можно вставить данные при несовпадении количества полей
например t1 имеет одно поле а t2 5 полей
при этом надо залить данными из 1 в 2 те строки которые отсутсвуют в одноименных полях обоих таблиц
столбци которые отсутсвуют имеют дефолтные значения но что то не прокатывает - ругается на несовпадение полей
9 авг 11, 00:12    [11088847]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
kDnZP
Member [заблокирован]

Откуда: ★[msg=16399436]★[msg=20850760]
Сообщений: 11289
Alexander_fx, покажите скрипт.
9 авг 11, 00:13    [11088849]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
Alexander_fx
Member

Откуда:
Сообщений: 660
да готовго нету оттого и топик сделал
сейчас делаю так
t3 временная таблица
delete from t3
insert into t3 SELECT ip FROM t1 EXCEPT SELECT * FROM t2
таким образом получаю строки которых нет в t2 но получаю из в таблицу t3
а потом програмно в цикле вставляю эти строки в таблицу t2
структура таблици
t1 id,col2,ip,col4
t2 id,col5,ip,col6
t3 id,ip

суть такая - есть сервис который добавляет данные в первую таблицу
раз в день надо вычислить уникальные строки сгруппированные по ip и добавить эти ip dj вторую таблицу
структура талиц различается но вставлять надо только ip - сотальные значения в таблице 2 имеют дефолтные значения
9 авг 11, 16:31    [11092756]     Ответить | Цитировать Сообщить модератору
 Re: подскажите с запрососм пожалуйста  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Alexander_fx,

  • не используйте *
  • перечисляйте все поля явно, заботясь о том, чтобы они, кроме всего прочего, были совместимы по типам.

    Вот как-то так.
  • 9 авг 11, 16:35    [11092794]     Ответить | Цитировать Сообщить модератору
     Re: подскажите с запрососм пожалуйста  [new]
    kDnZP
    Member [заблокирован]

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

    DECLARE @tbl1 TABLE (id INT IDENTITY, f VARCHAR(20))
    DECLARE @tbl2 TABLE (id INT IDENTITY(2,2), f1 VARCHAR(20), f2 VARCHAR(20))
    
    INSERT INTO @tbl1 (f)
    SELECT 'dfgdfg' UNION ALL SELECT 'test' UNION ALL SELECT 'dsfgdfg'
    
    INSERT INTO @tbl2 (f1,f2)
    SELECT 'test','dfgd45fg' UNION ALL SELECT 'test','dsf34gdfg'
    
    SELECT  id,
            f
    FROM    @tbl1
    EXCEPT
    SELECT  id,
            f1
    FROM    @tbl2
    9 авг 11, 16:40    [11092831]     Ответить | Цитировать Сообщить модератору
     Re: подскажите с запрососм пожалуйста  [new]
    Alexander_fx
    Member

    Откуда:
    Сообщений: 660
    ребята - с select я разобрался уже писал про это
    не работает insert

    тоесть
    SELECT id,
    f
    FROM @tbl1
    EXCEPT
    SELECT id,
    f1
    FROM @tbl2
    выводит что надо
    но стоит мне сделать

    insert into tbl2
    SELECT id,
    f
    FROM @tbl1
    EXCEPT
    SELECT id,
    f1
    FROM @tbl2

    так тут же валится сначала ошибка
    Column name or number of supplied values does not match table definition.
    а потом уже появляются откуда то дубликаты
    9 авг 11, 17:18    [11093210]     Ответить | Цитировать Сообщить модератору
     Re: подскажите с запрососм пожалуйста  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47142
    Alexander_fx,

    сказал же уже - перечисляйте поля в INSERT (у таблицы @tbl2)! Всегда!
    9 авг 11, 17:25    [11093269]     Ответить | Цитировать Сообщить модератору
     Re: подскажите с запрососм пожалуйста  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47142
    iap
    Alexander_fx,

    сказал же уже - перечисляйте поля в INSERT (у таблицы @tbl2)! Всегда!
    Или это я не здесь говорил?
    Всё равно это обязательное правило
    9 авг 11, 17:26    [11093278]     Ответить | Цитировать Сообщить модератору
     Re: подскажите с запрососм пожалуйста  [new]
    SamMan
    Member

    Откуда: Moscow
    Сообщений: 759
    Alexander_fx
    does not match table definition


    И чего не ясно? Давайте скрипт создания таблицы tbl2...
    9 авг 11, 17:32    [11093313]     Ответить | Цитировать Сообщить модератору
     Re: подскажите с запрососм пожалуйста  [new]
    Alexander_fx
    Member

    Откуда:
    Сообщений: 660
    вот в эту таблицу надо заливать новые неповторяющиеся значения ip которые селектятся из другой таблици с другой структурой - только поля ip совпадают по типу и названию


    CREATE TABLE [dbo].[t_4](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [ip] [varchar](15) NOT NULL,
    [live] [int] NULL,
    [stage] [int] NULL,
    CONSTRAINT [PK_t_4] PRIMARY KEY CLUSTERED
    (
    [ip] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]

    GO

    SET ANSI_PADDING OFF
    GO

    ALTER TABLE [dbo].[t_4] ADD CONSTRAINT [DF_t_4_live] DEFAULT ((0)) FOR [live]
    GO

    ALTER TABLE [dbo].[t_4] ADD CONSTRAINT [DF_t_4_stage] DEFAULT ((0)) FOR [stage]
    GO
    9 авг 11, 17:48    [11093414]     Ответить | Цитировать Сообщить модератору
     Re: подскажите с запрососм пожалуйста  [new]
    Glory
    Member

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

    Так что вам мешает указать только нужные поля в команде INSERT ?
    9 авг 11, 17:48    [11093422]     Ответить | Цитировать Сообщить модератору
     Re: подскажите с запрососм пожалуйста  [new]
    SamMan
    Member

    Откуда: Moscow
    Сообщений: 759
    Glory
    Так что вам мешает указать только нужные поля в команде INSERT ?


    Это правильно, но это второе.
    А первое - вы, Alexander_fx, в курсе наличия тега SRC в окне отсыла сообщений на форуме? Хинт: он крайне помогает людям пытающимся помочь вам - обрамляйте им свои сырцы!!
    9 авг 11, 17:52    [11093442]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
    Все форумы / Microsoft SQL Server Ответить