Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / группа данных объединенных одной версией ExistedVersion-способ имплементации? / 15 сообщений из 15, страница 1 из 1
29.11.2020, 12:13
    #40023127
alwil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
скажите пожалуйста

как по вашему мнению можно проверить такое положение вещей .

существует таблица BULK-TABLE1 в которой есть 10 записей
и существует в БД таблица EXISTED-TABLE2 в которой есть те же 10 записей объединенные одной версией ExistedVersion
как мне проверить что такая группа данных объединенных одной версией ExistedVersion уже существует в БД ( дабы не постоянно создавать новую версию )?
а дать этой группе существующую версию ExistedVersion из БД .

Я сделал топорно с while - может есть более элегантное решение?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
	    declare @ExistedVersion int, @FromFileCnt int , @FromDbCnt int
		select DISTINCT top 1 @ExistedVersion = ExistedVersion  from #4While

		print'--- while start'
		while @ExistedVersion is not null
		begin	
				 
		   print '@ExistedVersion >>>>' + cast(@ExistedVersion as nvarchar(20)) 
 
           select @FromFileCnt=COUNT(1) from BULK-TABLE1 

           select @FromDbCnt=COUNT(1) from EXISTED-TABLE2 where Version=@ExistedVersion

			---------------------------------------------------------
			PRINT '-- SAME COUNT IN FILE AND db AS IS'
			if (@FromDbCnt=@FromFileCnt and @FromDbCnt>0) 
			begin	
					update v
					set ExistedVersion= @ExistedVersion
					from MY TABLE
				
			else

			delete from #4While where ExistedVersion = @ExistedVersion
			select @ExistedVersion=null  
			select DISTINCT top 1 @ExistedVersion = ExistedVersion  from #4While
		end  
	   PRINT '--- while EOF---------
...
Рейтинг: 0 / 0
29.11.2020, 15:03
    #40023161
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
Код: sql
1.
2.
3.
4.
5.
6.
7.
with x as ( select * from BULK-TABLE1 )
   , t as ( select * from EXISTED-TABLE2 )
   , v as ( select distinct Version from t )
   select * 
     from v
	      where not exists( select *, v.Version from x except select * from t where t.Version = v.Version ) -- поля, канешно, лучше бы явно перечислить...
		    and not exists( select * from t where t.Version = v.Version except select *, v.Version from x )
...
Рейтинг: 0 / 0
29.11.2020, 16:43
    #40023172
alwil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
к сожалению не работает
...
Рейтинг: 0 / 0
29.11.2020, 16:46
    #40023173
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
alwil
к сожалению не работает

Чо, так прям и пишет: "ниработаю"?
...
Рейтинг: 0 / 0
29.11.2020, 20:27
    #40023203
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
alwil,

что в Вашем понимании означает "группа данных уже существует"? Каковы критерии?
...
Рейтинг: 0 / 0
30.11.2020, 12:06
    #40023295
alwil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
TABLE-BULK - входящие данные записываемые снова и снова в таблицу TABLE-BULK
=====
ID
------
1
2
3
4
----------
5
6
1
2
-----------

определенная группа данных (например ID с 1,2,3,4) получила в БД номер версии VERSION=V1 в таблице TABLE-EXISTED

я хочу при каждом новом записывании данных
проверить существует ли в БД такая же группа данных (например ID с 1 до 4) и какая у нее версия - V1
и не записывать ее в таблицу TABLE-EXISTED


так как- такая же комбинация данных уже существует в БД с версией V1
А вот в случае с комбинацией данных ID (с 5,6,1,2) она не существует в TABLE-EXISTED и ее можно записать и дать ей норвую версию V3

TABLE EXISTED - существующие ( до этого записанные данные) в таблице TABLE-EXISTED
=====
ID | VERSION
--------------
1 | V1
2 | V1
3 | V1
4 | V1
----------
1 | V2
2 | V2
3 | V2
----------
...
Рейтинг: 0 / 0
30.11.2020, 12:15
    #40023299
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
alwil
проверить существует ли в БД такая же группа данных (например ID с 1 до 4) и какая у нее версия - V1

И чем, интересно, 5 не угодило?
Пачиму "(например ID с 1 до 4)", а не с "(например ID с 1 до 5)" или "(например ID с 1 до 2)"?
...
Рейтинг: 0 / 0
30.11.2020, 12:32
    #40023314
alwil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
я объясню на примере автобусов

TABLE_BULK - таблица прибытия автобусов BULK
---------------
TIME | VERSION
------------------
11:22 | 123 -- we put existed version 123
12:22 | 123 -- we put existed version 123
13:22 | 123 -- we put existed version 123
-----------------
22:22 | ?? -- should be created new version + insert new version in TABLE_EXISTED
12:22 | ?? -- should be created new version + insert new version in TABLE_EXISTED
15:22 | ?? -- should be created new version + insert new version in TABLE_EXISTED
17:22 | ?? -- should be created new version + insert new version in TABLE_EXISTED
-----------------

TABLE_EXISTED - таблица прибытия автобусов EXISTED
---------------
TIME | VERSION
------------------
11:22 | 123
12:22 | 123
13:22 | 123
-----------------

вся это для того чтобы не раздувать БД по поводу новых записываеммый блоков\групп данных
...
Рейтинг: 0 / 0
30.11.2020, 13:23
    #40023327
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
alwil
22:22 | ?? -- should be created new version + insert new version in TABLE_EXISTED
12:22 | ?? -- should be created new version + insert new version in TABLE_EXISTED
15:22 | ?? -- should be created new version + insert new version in TABLE_EXISTED
17:22 | ?? -- should be created new version + insert new version in TABLE_EXISTED
Думаете кто-нибудь захочет угадать почему это один набор, а не два, три или четыре?
...
Рейтинг: 0 / 0
30.11.2020, 13:34
    #40023331
Тяп-ляп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
Может, это в тему реляционного деления?
...
Рейтинг: 0 / 0
30.11.2020, 14:12
    #40023344
alwil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
каждый ввод данных представляет из себя монолитный блок данных ( то есть все часы приезда в данном вводе данных в TABLE_BULK)
моя цель найти тот же самый блок данных в TABLE_EXISTED
и если есть такой существует - то найти объединяющую их версию и присвоить этому блоку данных
...
Рейтинг: 0 / 0
30.11.2020, 14:43
    #40023351
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
alwil
каждый ввод данных представляет из себя монолитный блок данных
В таблицах нет "монолитных блоков данных". В таблицах есть строки.
И вряд ли вам кто-нибудь поможет, пока не объясните по каким критериям строки объединяются в эти самые блоки.
...
Рейтинг: 0 / 0
30.11.2020, 15:59
    #40023392
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
Судя по всему, страдалец хочет найти в существующей таблице САМОЕ ДЛИННОЕ совпадение с НАЧАЛОМ данных новой таблицы.
При полном отсутствии критерия упорядочения.

И все это совпадение не писать. Это означает в его терминах "найти объединяющую их версию".
Но что в его больном воображении означает "и присвоить этому блоку данных" - одному аллаху ведомо.
Ведь этот блок уже совпал...

А хвост несовпадения - написать как новый "монолитный" блок.

Короче, трэшЪ и угарЪ.

ЗЫ. В сущности, в этом отсутствии понимания и заключаются все проблемы страдальцев.
Они не могут внятно объяснить чего они хотят.
Даже самим себе.
...
Рейтинг: 0 / 0
30.11.2020, 16:12
    #40023399
alwil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
группа данных объединенных одной версией ExistedVersion-способ имплементации?
  • существует определенная группировка строк в TABLE_BULK
  • мне нужно найти точно такие же строки ровно в том же количестве в таблице TABLE_EXISTED
  • ...
    Рейтинг: 0 / 0
    30.11.2020, 16:22
        #40023406
    invm
    Участник
    Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
    группа данных объединенных одной версией ExistedVersion-способ имплементации?
    alwil
    существует определенная группировка строк в TABLE_BULK
    Это очень ценная информация. Продолжайте партизанить.

    Впрочем, вам уже дали намек - 22240326
    ...
    Рейтинг: 0 / 0
    Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / группа данных объединенных одной версией ExistedVersion-способ имплементации? / 15 сообщений из 15, страница 1 из 1
    Целевая тема:
    Создать новую тему:
    Автор:
    Найденые пользователи ...
    Разблокировать пользователей ...
    Читали форум (0):
    Пользователи онлайн (0):
    x
    x
    Закрыть


    Просмотр
    0 / 0
    Close
    Debug Console [Select Text]