Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Найти уникальное значение поля тип smallint, not null из нескольких таблиц MSSQL 2005

Как найти уникальное значение поля RptIndividualGroups.IndividualNdx(smallint, not null) из нескольких таблиц (cross/inner join) MSSQL 2005?

пример

SELECT RptIndividualGroups.TenantNdx, RptIndividualGroups.IndividualNdx, RptIndividualGroups.GroupNdx, RptIndividualGroups.Priority,
RptIndividualGroups.DoorScheduleNdx, GroupsView.GroupId, GroupsView.GroupName, GroupsView.TenantNdx AS Expr7,
RptIndividualGroups.TenantNdx AS Expr1, RptIndividualGroups.IndividualNdx AS Expr2, RptIndividualGroups.GroupNdx AS Expr3,
GroupsView.GroupId AS Expr4, GroupsView.GroupName AS Expr5, GroupsView.TenantNdx AS Expr6
FROM RptIndividualGroups INNER JOIN
GroupsView ON RptIndividualGroups.TenantNdx = GroupsView.TenantNdx AND RptIndividualGroups.GroupNdx = GroupsView.GroupId
ORDER BY RptIndividualGroups.IndividualNdx

Не получается применить функцию COUNT в данном случае с двумя таблицами....
Ответ:
alexxxfm
WarAnt,

Пример для RptIndividualGroups.IndividualNdx можете написать?


вы сначала оформите топик как в написано, а то пример чего надо непонятно ни разу.

Вам также можеть быть интересно:

Индекс для одной записи
Firebird & php
Вопрос по nls_lang
SORT ORDER BY & COUNT STOPKEY
Составной полуникальный индекс )
Вопрос: Найти все схожие результаты по полю

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

НУ как то так...
Ответ:
Gerd пишет:
как составить выборку так, чтобы в результате получить все записи из бд. В поле котором полностью иои частично указана фраза.
НУ как то так...

Добрый день!
На всякий случай уточню:
"Как искать, чтобы в результате получить все записи из БД, в которых в поле полностью или частично указана фраза?"

Будет искать в БД записи, в которых в поле feld значения: "частично указана фраза" и "совсем не указана" ....
.... WHERE `feld` LIKE '%указана%'
или
.... WHERE `feld` REGEXP 'указана'
Вопрос: Работа с датами, суммирование результатов

Добрый день!

Есть таблица с историей работы системы:
create table #t (ids int, idf int, sdt datetime, edt datetime, ddt datetime)


поле ids принимает значения от 1 до 12, поле idf принимает значения 2 или 3.
sdt - первоначальная дата, edt - финальная дата, ddt - разница между edt и sdt.

Задача:
Найти в таблице записи с флагом idf=2 удовлетворяющие следующим условиям:
1. sdt записи(флаг=2) меньше sdt записи (флаг=3) и edt записи (флаг=2) меньше edt записи(флаг=3)
В графическом виде
sdt(2)-------------------edt(2)
sdt(3)--------------edt(3)
2. sdt записи(флаг=2) больше sdt записи (флаг=3) и edt записи (флаг=2) меньше edt записи(флаг=3)
В графическом виде
sdt(2)-----------edt(2)
sdt(3)----------------------------edt(3)

Написал следующий код:
	select
	t.ids as idSt,
	t.idf as idFlag,
	,sum(datediff(Second,0,t.ddt)-7) as cnt
	from #t t
	where
		idf=2 and
		(
		edt between (select top 1 sdt from #t where idf=3 and ids=t.ids+1 and sdt<=t.sdt and edt>=t.edt) and
		(select top 1 edt from #t where idf=3 and ids=t.ids+1 and sdt<=t.sdt and edt>=t.edt)
		or
		edt between (select top 1 sdt from #t where idf=3 and ids=t.ids+1 and sdt>=t.sdt and edt>=t.edt) and
		(select top 1 edt from #t where idf=3 and ids=t.ids+1 and sdt>=t.sdt and edt>=t.edt)
		)
		and
		DATEDIFF(SECOND,0,ddt)-7>0
	group by
		t.ids,
		t.idf
	order by ids, idf


Все вроде бы считается, но есть печальный ньюанс.
Если таблицу наполнить соседними данными (например, ids равно 2 и 3), то результат поля CNT становится одним,
а если наполнить таблицу всеми данными (ids от 1 до 12), то другим :(

Как мне исправить данный код для корректных расчетов?

Спасибо.

Никогда не бойся делать то, что не умеешь.
Помни, профессионалы построили Титаник, а Ковчег любители.
Ответ: Коллеги,
вопрос снят.

Стыжусь, приведенный код тестировал на нулевых датах (2017-04-18 00:00:00 - 2017-04-19 00:00:00),
а при переносе в программу даты были такие же, только время было указано иное.
Отсюда и возник вопрос, отчего результаты разные.

Заработался, одним словом.
Вопрос: найти максимальный элемент поля

Здравствуйте. В базе пытаюсь создать следующие два запроса:
1) Студент, имеющий наивысший балл по выбранному предмету.
2) Преподаватель, принявший наибольшее количество экзаменов.
Для первого запроса, Запрос 1, выбираю поля: предмет, студент и оценка. Указываю название предмета, для поля оценка, групповая операция:Max. Но запрос выводит список всех студентов((.
Для второго запроса сначала строю Запрос 2, который подсчитывает кол-во принятых экзаменов для каждого преподавателя, потом строю запрос 3, по аналогии с Запросом 1, но мне также выводит список всех преподавателей((.
подскажите, пожалуйста, что нужно исправить, что запросы выводили нужную информацию.

К сообщению приложен файл (Универ.zip - 27Kb)
Ответ: Я, когда первый свой пост в этой ветке писал, тоже про TOP думал, но отказался. Возможно, зря - просто забыл о существовании WITH TIES;).
Вопрос: По-хитрее найти минимум значений полей (одного типа) записи с конкрентым id

Количество полей конечно и задано. Пока кроме
 select min(a) 
from
(select t.f1 a from mytable t
union all
select t.f2 from mytable
.....) t


идей нет. Как-то хитрее можно?
Ответ: waszkiewicz, думаю, вам поможет unpivot (

declare @q table(id int, f1 int, f2 int, f3 int, f4 int)
insert @q values (1,2,3,2,1),(2,5,6,-1,10),(3,10,1,2,0)

select *
from @q

idf1f2f3f4
12321
256-110
310120


select id, f, val
from  @q
unpivot(val -- название столбца со значениями 
        for f -- название столбца, в который попадут названия "развернутых" столбцов
        in(f1,f2,f3,f4) -- список столбцов, которые разворачиваем
       ) as a

idfval
1f12
1f23
1f32
1f41
2f15
2f26
2f3-1
2f410
3f110
3f21
3f32
3f40


select min(val) as MinF
from  @q
unpivot(val for f in(f1,f2,f3,f4)) as a


MinF
-1
Вопрос: LogMiner. EMPTY_BLOB(). Реально найти запись с непустым значением BLOB-поля?

Oracle 11g (v.11.1.07) Standard.

Холодной копии нет, есть только архивные журнальные файлы. Есть таблица в которой оч важно восстановить записи месячной давности, точнее даже ОДНУ запись). Архивные журнальные файлы есть все начиная с января этого года(прокол только с холодной копией), данные нужны за 9.06.2015 с 12:20 до 12:26.

LogMiner-ом за этот интервал нахожу только одну запись от нужного мне клиента(данные получены по системе Клиен-Банк):

SELECT v.TIMESTAMP, v.SEG_OWNER, v.SEG_NAME, v.OPERATION, v.SQL_REDO, v.SQL_UNDO
FROM V$LOGMNR_CONTENTS v
WHERE seg_name = 'TRANSPACKETS'
and sql_redo like '%100809462%'


результат запроса:

insert into "ADMIN"."TRANSPACKETS"
values
"CONNDATA" IS NULL,
"DOCSREF" IS NULL,
"FROMCLIENTID" = 100809462,
"GATE" = 1,
"KINDOFPACKET" = 'IP',
"NUMOFDOCS" = 0,
"PACKDATE" = 735758,
"PACKSCHEMA" IS NULL,
"PACKTIME" = 446924000,
"PACKET" = EMPTY_BLOB(),
"PARTNO" = 0,
"PARTS" = 0,
"RELFROMID" = 0,
"RELPACKDATE" = 0,
"RELPACKTIME" = 0,
"TOCLIENTID" = 10071783,
"FDELIVDATE" = 0,
"FDELIVTIME" = 0,
"FINOUT" = 1,
"FLEVEL" = 0,
"FRESULT" = 0,
"FSENDDATE" = 735758,
"FSENDTIME" = 446093370,
"FSTATUS" = 17

Блин реально вообще найти данные этого поля "PACKET"? В нем зашифрованный бинарник пакета полученного от клиента, т.е. сами платежки + цифровые подписи.

Анализируя вообще все записи за данные период(без id-клиента 100809462) я вижу кучу записей где вместо функции EMPTY_BLOB() в это поле передаются реальные данные типа:

"PACKET" = HEXTORAW('53534950....

Пробовал интервал увеличивать на целый день, 4 часа квери работало, но интересного так и не показало(

Что скажите дрУги, есть вариант откапать BLOB-данные LogMiner-ом?

С уважением, Дмитрий.
Ответ: Leonid Kudryavtsev,

А вот это интересно) Время есть, попробую))
Вопрос: id IN( отсортированный результат запроса SELECT )

Здравствуйте.
Проблема похоже на http://www.sql.ru/forum/1091189/sql-in-array?hl=id in.
Только в IN не готовый массив айдишников, а отсортированная как мне надо таблица айдишников:

SELECT * FROM tbl_post WHERE id IN (- результат SELECT, отсортированная таблица с одним полем id -)

Как добиться того чтобы в результате всего запроса я получал значения отсортированные как во вложенном запросе?
Спасибо.
Ответ:
sqlNovyi
Мне же нужно чтобы сортировка сохранялась как во внутренней выборке.
Перенести сортировку из подзапроса в запрос. А в подзапросе убрать - она там чуть больше чем нахрен не нужная и вообще лишняя.

sqlNovyi
Нет ли оператора который бы отдавал в результате поля в строгой очередности принятых аргументов?
Нет.
Вопрос: Отличается результат работы ХП от результата при её отладки

Приветствую.
Не могу понять, почему происходит такая жуть.
При запуске кода, который содержится в хранимой процедуре, задавая предварительно нужные параметры, получаю в результате требуемые данные, они упорядочены так, как нужно. А при выполнении этой хранимой процедуры через exec получаю другие данные. Внутри кода ХП собираются данные во временные таблицы и результирующий запрос такой:
select * from #report_table
order by Id, RecNo, GroupNo

Пример результата, полученного после запуска кода хранимой процедуры:
Id	RecNo		GroupNo		Numer
1	1		1		6303005
2	2		1		6303005
3	3		1		6303005
4	4		1		6303005
5	5		1		6303005
6	6		1		6303005
7	7		1		6303005
8	8		1		6303005
9	9		1		6303005
10	10		1		6303005
11	11		1		6303005
12	12		1		6303005
13	13		1		6303005
14	14		1		6303005
...

А это пример результата, полученного после запуска хранимой процедуры через exec:
Id	RecNo		GroupNo		Numer
1	1		1		6303005
2	2		1		2006094
3	3		1		73461
4	4		1		6534373
5	5		1		163225
6	6		1		125142
7	7		1		4995140
8	8		1		6303005
9	9		1		2006094
10	10		1		73461
11	11		1		6534373
12	12		1		163225
13	13		1		125142
14	14		1		4995140
...

Помогите, пожалуйста, конструктивным советом. Спасибо.
Ответ:
TaPaK
stdvb
Так у вас сортировка не однозначная, нужно так:
order by Id, RecNo, GroupNo, Number


и что изменится?
Это намёк на то, что, возможно, в результате поля Id, RecNo, GroupNo не уникальные.
Тогда как бы результат одинаковый, просто этого не видно.
Вопрос: Вычисления по полям и передача клиенту.

Добрый вечер всем!
Хочу спросить у знатоков SQL server..

Делаю запрос по БД. Запрос с несколькими Left Join, на выходе получаю табличку с первичными данными.
Теперь нужно обработать эту таблицу и на полученных полях выполнить некоторые вычисления.
В результате полей станет раза в два -три больше.

эти вычисления можно сделать и с помощью агрегатных функций БД (с использованием проверок isnull), и передать уже готовые данные,
и в клиентском приложении, по первичным данным, полученным из БД от основого запроса.
(БД и клиент - физически на одной машине.)

Вопрос - вычисления стоит выполнять в БД или в клиентском приложении?
Какие есть аргументы того и другого способа?
Лично мне кажется, что скорость вычисления агрегатных функций БД выше (имхо),
но не очень удобно на sql писать логику вычисления полей, я бы перенес ее в c#..
Ответ: Спасибо, буду пробовать.
Вопрос: Как прибавить к дате определенное кол-во n-дней и вывести результат?

Добрый день!
ситуация такая, как мне к дате добавить 10дней? Есть дата, например 2015-10-11, нужно добавить 10дней и найти все записи, которые будут начинаться с 2015-20-11
Спасибо!

Добавлено через 15 минут
Код T-SQL
1
2
3
select*
from  users
where cast (DATEADD(day,10,getdate())=
пытаюсь начать так, но дальше идей нет...

date_or-поле с датой
Помогите советом,пожалуйста
Ответ: нет, не update
в таблице есть поле с датой создания записи, нужно к определенной дате прибавить n-дней и найти конечный результат, который будет удовлетворять условию, с учетом этих n-дней

Например:
id1 2015-10-10
id2 2015-10-11
id3 2015-10-12
id4 2015-11-03
id5 2015-10-20
Прибавляем к id1 3 дня, в результате должны получить id4 и id5, так как id2 и id3 -не удовлетворяют условию
Пытался через dateadd, но правильный результат не могу получить.