Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Работает 50 на 50 / 10 сообщений из 10, страница 1 из 1
29.07.2020, 16:28
    #39985032
Raze
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
Добрый день всем! Может кто подсказать, что не так? У меня в таблице брака (_braks_a), которая получается при выполнении запроса, в ней есть пустые записи (null), если запись пустая, то выводим "Вид брака не указан", но я не хочу чтобы в таблицу выводились записи с источником брака "Опытные работы", поэтому в условии явно указал, что этот вид брака не выводим. После выполнения запроса, пропадают все записи с источником брака "Опытные работы", а так же пропадают записи со значением null, не могу понять почему, подскажите пожалуйста
Тип поля VID - Memo, 4

Код: 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.
29.
30.
31.
32.
33.
34.
declare @dateN  date = '2020-07-01'
declare  @datek date = '2020-07-31'

 select  r.*
, 1 pr_str
,case when  isnull((select  dd.kol
				from dms dd
				where dd.undoc	=r.UNDOC and dd.npp=r.NPP
						and dd.KDMT='СБП'
				),1) >0 
		then 0
		else 1									
	end flgDopBraka
	, DATEPART(week, r.DDM) w
	, DATEPART(MONTH, r.DDM) m
	, DATEPART(YEAR, r.DDM) y
	--узнаем номер недели и года прошлой недели
	, DATEPART(week, DATEADD(week,-1,getdate())) lw  
	, DATEPART(YEAR, DATEADD(week,-1,getdate())) lwy
from(
select bb.FIO_D
	, bb.COMM, bb.DDM, bb.dprt, bb.FIO_OTV, bb.HSDOC, bb.KMAT, bb.KOL
	, bb.kom, bb.KPRT_DB, bb.N_RES_DOC, bb.NDM, bb.NDMT_S, bb.NPP
	, isnull(bb.per,0) per
	, bb.PR_RZN, bb.PRCH
	, isnull(bb.resh,'') resh
	, bb.sum_d, bb.sum_i, bb.UNDOC
    , bb.VID
    , '  '+isnull(bb.VID,'Вид брака не указан') VIDn                               
from _BRAKS_A bb
where bb.ddm between @dateN and @datek
    and not bb.KPRT_DB in ('Б00003/18','Б00007/18','Б00008/18','Б00010/18 ')
	and bb.vid <> 'Опытные работы' 
)r
...
Рейтинг: 0 / 0
29.07.2020, 16:46
    #39985040
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
Raze
После выполнения запроса, пропадают все записи с источником брака "Опытные работы", а так же пропадают записи со значением null, не могу понять почему, подскажите пожалуйста

из-за этого условия
Код: sql
1.
and bb.vid <> 'Опытные работы'


null сравнивать нельзя. Можно только проверять is null / is not null

Так измени
Код: sql
1.
and isnull(bb.VID,'Вид брака не указан') <> 'Опытные работы'


или так
Код: sql
1.
and (bb.vid <> 'Опытные работы' or bb.vid is null)
...
Рейтинг: 0 / 0
29.07.2020, 16:48
    #39985041
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
Код: sql
1.
and (bb.vid is null or bb.vid <> 'Опытные работы')
...
Рейтинг: 0 / 0
29.07.2020, 16:53
    #39985048
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
Проверь SET ANSI_NULLS
...
Рейтинг: 0 / 0
30.07.2020, 09:49
    #39985220
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
godsql
Проверь SET ANSI_NULLS


А ещё лучше поменяй, и удивляйся результатам всех остальных запросов.
...
Рейтинг: 0 / 0
30.07.2020, 11:20
    #39985248
Raze
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
court,
круто! спасибо большое) буду знать!
...
Рейтинг: 0 / 0
30.07.2020, 11:21
    #39985249
Raze
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
Всем огромное спасибо за помощь! Все ок)
...
Рейтинг: 0 / 0
30.07.2020, 11:51
    #39985264
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
env
godsql
Проверь SET ANSI_NULLS


А ещё лучше поменяй, и удивляйся результатам всех остальных запросов.

ну, может быть человек привык к другому окружению, потому и вызвало затруднение
...
Рейтинг: 0 / 0
30.07.2020, 12:00
    #39985268
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
godsql,

Меня каждый раз умиляет, когда "привыкшие к другому окружению", искренне не понимают, почему в большинстве СУБД null <> null и разнорегистровые значения считаются разными. А уж когда это проявляется на родном сиквеле, так и вообще люди в ступор спадают.
...
Рейтинг: 0 / 0
30.07.2020, 14:25
    #39985329
godsql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работает 50 на 50
Ну, троичная логика во многих языках используется. В том же JavaScript гораздо более непонятное использование, чем в скуле. Насколько я помню, работа с учетом null в скуле еще в самом начале рассматривается, там много где "совсем не так" работает. Это ж база.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Работает 50 на 50 / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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