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

не работает вторая часть с 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
не понимаю, как написать union
    #40060145
MoonRabbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если отдельно второй запрос выполнить - данные возвращает?
...
Рейтинг: 0 / 0
не понимаю, как написать union
    #40060149
EliLT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в программе эта часть процедуры отвечает за поисковую форму. В идеале поисковая система ищет только man_k, но вы также должны искать nomesco_k, если пользователь этого хочет.

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

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

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

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

я не могу представить, где ошибка. пытался соединить оба select с left join, также не могу найти данные.
...
Рейтинг: 0 / 0
не понимаю, как написать union
    #40060841
EliLT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я пришел к такому решению на данный момент, но все еще есть ошибка.
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
не понимаю, как написать union
    #40060847
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EliLT
Unclosed quotation mark after the character string.
показывает область, выделенную жирным шрифтом.
Повторю ответ: 22305224
...
Рейтинг: 0 / 0
не понимаю, как написать union
    #40060929
MoonRabbit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Unclosed quotation mark after the character string.
вроде понятно написано


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


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


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