Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не понимаю, как написать union / 11 сообщений из 11, страница 1 из 1
06.04.2021, 13:43
    #40060143
EliLT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
Подскажите пожалуйста, есть ли здесь ошибка?

не работает вторая часть с union.
объединение таблиц не дает данных о nomesco_k. Я пытаюсь выяснить, есть ли здесь ошибка или уже в программном коде.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
IF @MANIP_K IS NOT NULL AND @MANIP_K <> ''
        SET @WHERE = @WHERE + ' AND EXISTS 
( 
               SELECT hm.HM_ID
        FROM Xdb.[Z_HOSPMANIP] hm
        INNER JOIN Xdb.V_MANIPULATIONS mn ON mn.[MAN_ID] = hm.[MAN_ID]
        WHERE HOSP_ID = h.hosp_ID AND mn.MAN_K = ''' + CONVERT(VARCHAR,@MANIP_K) + '''
        UNION
        SELECT hm.HM_ID
        FROM Xdb.[Z_HOSPMANIP] hm
        INNER JOIN Xdb.Y_NOMESCO nm ON nm.[NOMESCO_ID] = hm.[NOMESCO_ID]
        WHERE HOSP_ID = h.hosp_ID AND nm.NOMESCO_K = ''' + CONVERT(VARCHAR,@NOMESCO_K) + '''
)'
...
Рейтинг: 0 / 0
06.04.2021, 13:46
    #40060145
MoonRabbit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
если отдельно второй запрос выполнить - данные возвращает?
...
Рейтинг: 0 / 0
06.04.2021, 13:58
    #40060149
EliLT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
в программе эта часть процедуры отвечает за поисковую форму. В идеале поисковая система ищет только man_k, но вы также должны искать nomesco_k, если пользователь этого хочет.

но вот вопрос, есть ли ошибка в синтаксисе? Отдельно ето nomesco_k находит.
но так как я хочу соединить вместе, его больше ненаходит, первый select тоже сворачивается.
...
Рейтинг: 0 / 0
06.04.2021, 14:31
    #40060156
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
EliLT,

А у вас @MANIP_K может быть больше 30 символов? Если да, то будут проблемы.

Вдогонку:
Код: sql
1.
WHERE HOSP_ID = h.hosp_ID

Левый hosp_id указан без алиаса в обоих запросах, входящих в ваш динамический UNION. Лично я вот не уверен, что SQL Server поймет это так, как хочется вам; скорее всего, он поймет это буквально.
...
Рейтинг: 0 / 0
06.04.2021, 15:20
    #40060169
EliLT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
MANIP_K допускает до 20 символов. это вряд ли будет проблемой. динамического sql мне нужно еще прочитать подробнее.
...
Рейтинг: 0 / 0
06.04.2021, 19:26
    #40060212
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
EliLT
MANIP_K допускает до 20 символов. это вряд ли будет проблемой. динамического sql мне нужно еще прочитать подробнее.
Если в CAST или CONVERT у CHAR или VARCHAR не задаётся длина,
то предполагается, что она равна 30
...
Рейтинг: 0 / 0
06.04.2021, 23:48
    #40060241
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
EliLT
MANIP_K допускает до 20 символов. это вряд ли будет проблемой. динамического sql мне нужно еще прочитать подробнее.
Начните с вывода получившейся @WHERE
...
Рейтинг: 0 / 0
07.04.2021, 13:04
    #40060335
EliLT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
К данным добираюсь отдельно. когда я соединяюсь вместе, никак.

я не могу представить, где ошибка. пытался соединить оба select с left join, также не могу найти данные.
...
Рейтинг: 0 / 0
08.04.2021, 22:23
    #40060841
EliLT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
Я пришел к такому решению на данный момент, но все еще есть ошибка.
Unclosed quotation mark after the character string.
показывает область, выделенную жирным шрифтом.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
IF @MANIP_K is not null and @MANIP_K <> ''
		set @WHERE = @WHERE + ' AND EXISTS 
		(SELECT hm.HM_ID
		FROM AB3.[D3_HOSPMANIP] hm
		INNER JOIN ab3.A2E_MANIPULATIONS mn ON mn.[MAN_ID] = hm.[MAN_ID]
		WHERE HOSP_ID = h.hosp_ID AND mn.MAN_K = ''' + convert(varchar,@MANIP_K)
		
	IF @searchNomescoK is not null 
			IF @searchNomescoK = 1
			set @WHERE = @WHERE + '
			UNION
		SELECT hm.HM_ID
		FROM AB3.[D3_HOSPMANIP] hm
		INNER JOIN AB3.D3S_NOMESCO nm ON nm.[NOMESCO_ID] = hm.[NOMESCO_ID]
		WHERE HOSP_ID = h.hosp_ID AND nm.NOMESCO_K = ''' + convert(varchar,@MANIP_K) + ''')'
...
Рейтинг: 0 / 0
08.04.2021, 22:46
    #40060847
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
EliLT
Unclosed quotation mark after the character string.
показывает область, выделенную жирным шрифтом.
Повторю ответ: 22305224
...
Рейтинг: 0 / 0
09.04.2021, 10:28
    #40060929
MoonRabbit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не понимаю, как написать union
Unclosed quotation mark after the character string.
вроде понятно написано


к
Код: sql
1.
AND mn.MAN_K = ''' + convert(varchar,@MANIP_K)


добавьте
Код: sql
1.
+ '''
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не понимаю, как написать union / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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