Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
интересный запрос или что-то еще ?
|
|||
|---|---|---|---|
|
#18+
Необходимо определить одинаковы ли значения нескольких полей в нескольких записях таблицы. Например. table id = 1 name1 = 1 name2 = 2 name3 = 3 .. id = 5 name1 = 1 name2 = 3 name3 = 3 .. id = 9 name1 = 2 name2 = 1 name3 = 3 .. .. .. .. Нужно узнать одинаковы ли значения у записей id = 1, id = 5, id = 9 в полях name1, name2, name3 Как подобное можно реаизовать ? Заранее благодарен. С Уважением. Андрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2002, 17:18 |
|
||
|
интересный запрос или что-то еще ?
|
|||
|---|---|---|---|
|
#18+
если интересует одна результирующая запись,содержащая признаки равенства между всеми записями,то это что-то вроде: select (case when sum(name1)=count(*)*max(name1) then 1 else 0 end) as res_name1, (case when sum(name2)=count(*)*max(name2) then 1 else 0 end) as res_name2, (case when sum(name3)=count(*)*max(name3) then 1 else 0 end) as res_name3 Правда, будет работать только если поля числовые. Если это не то, что подразумевалось, то поставьте задачу точнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2002, 20:32 |
|
||
|
интересный запрос или что-то еще ?
|
|||
|---|---|---|---|
|
#18+
если интересует одна результирующая запись,содержащая признаки равенства между всеми записями,то это что-то вроде: select (case when sum(name1)=count(*)*max(name1) then 1 else 0 end) as res_name1, (case when sum(name2)=count(*)*max(name2) then 1 else 0 end) as res_name2, (case when sum(name3)=count(*)*max(name3) then 1 else 0 end) as res_name3 from... Правда, будет работать только если поля числовые. Если это не то, что подразумевалось, то поставьте задачу точнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2002, 20:33 |
|
||
|
интересный запрос или что-то еще ?
|
|||
|---|---|---|---|
|
#18+
Посторяюсь уточнить задачу. Есть таблица из множества записей. И необходимо узнать у каких записей значения одних и техже полей одинаковы. Причем какие именно записи нас интересуют известно заранее. Также необходимо знать само значение этого полях в которых значения равны. Поля могут быть как int так и char и bool. Конечно можно делать очень много запросов из C++ Builder, но это не есть good. Может можно реализовать такое силами и средствами SQL ? Заранее благодарен. С Уважением. Андрей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2002, 04:27 |
|
||
|
интересный запрос или что-то еще ?
|
|||
|---|---|---|---|
|
#18+
Текст хранимой процедуры: \nCREATE PROCEDURE SameValuesInFields @TABLE_SCHEMA nvarchar(128 ), --table owner @TABLE_NAME nvarchar(128 ) --table name AS /* Условимся, что PK определен на одном поле типа int, стоящем на первом месте */ create table #tmp_result ( column_ordinal_position int not null, column_value sql_variant not null, PKFromTable int not null ) DECLARE @PK_NAME nvarchar(128 ) Select @PK_NAME=COLUMN_NAME from INFORMATION_SCHEMA.Columns where ORDINAL_POSITION=1 AND TABLE_NAME=@TABLE_NAME AND TABLE_SCHEMA=@TABLE_SCHEMA DECLARE cur CURSOR FOR Select COLUMN_NAME, ORDINAL_POSITION from INFORMATION_SCHEMA.Columns where TABLE_NAME=@TABLE_NAME AND TABLE_SCHEMA=@TABLE_SCHEMA AND ORDINAL_POSITION>1 Order By Ordinal_Position DECLARE @SQLText nvarchar(4000), @ORDINAL_POSITION int, @COLUMN_NAME nvarchar(128 ) open cur fetch next from cur into @COLUMN_NAME, @ORDINAL_POSITION while @@fetch_status=0 BEGIN Set @SQLText= 'Select '+CAST(@ORDINAL_POSITION As varchar(10))+' As column_ordinal_position, '+ 't1.['+@COLUMN_NAME+'] As column_value, '+ 't1.['+@PK_NAME+'] As PKFromTable '+ 'From '+ @TABLE_SCHEMA+'.['+@TABLE_NAME+'] t1 '+ 'inner join '+@TABLE_SCHEMA+'.['+@TABLE_NAME+'] t2 '+ 'on t1.['+@COLUMN_NAME+']=t2.['+@COLUMN_NAME+'] AND '+ 't1.['+@PK_NAME+']<>t2.['+@PK_NAME+'] '+ 'Group By t1.['+@COLUMN_NAME+'], t1.['+@PK_NAME+'] '+ 'HAVING Count(*)>1' INSERT INTO #tmp_result execute (@SQLText) fetch next from cur into @COLUMN_NAME, @ORDINAL_POSITION END close cur deallocate cur Select * from #tmp_result GO Пример использования: \ncreate table tmp ( pk int identity(1,1) not null primary key clustered, name1 nvarchar(10) not null, name2 int not null, name3 money not null ) go insert into tmp (name1, name2, name3) values ('a', 0, 1) insert into tmp (name1, name2, name3) values ('b', 1, 2) insert into tmp (name1, name2, name3) values ('c', 0, 1) insert into tmp (name1, name2, name3) values ('c', 0, 3) insert into tmp (name1, name2, name3) values ('b', 1, 2) insert into tmp (name1, name2, name3) values ('c', 1, 5) insert into tmp (name1, name2, name3) values ('a', 0, 1) insert into tmp (name1, name2, name3) values ('b', 1, 2) insert into tmp (name1, name2, name3) values ('b', 1, 2) insert into tmp (name1, name2, name3) values ('a', 0, 1) insert into tmp (name1, name2, name3) values ('z', 111111, 111111) go execute SameValuesInFields 'dbo','tmp' drop table tmp go Это то, что нужно было получить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2002, 07:58 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32028601&tid=1822967]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
129ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 449ms |

| 0 / 0 |
