Уточнить SQL-запрос к определенной строке таблицы - PullRequest
0 голосов
/ 11 мая 2018

Краткое объяснение проблемы:

В настоящее время я пытаюсь создать отчет (файл RDL) в Visual Studio, который получает все телефонные звонки для конкретного случая и распечатывает их в 2 таблицах, которые выглядят следующим образом: Текущие таблицы, Моя проблема в том, что когда я запускаю отчет, он захватывает информацию из каждого случая, а не из конкретного случая, в котором я сейчас нахожусь.

Вот запрос, который я использую для получения информации для таблиц:


SELECT 

FilteredPhoneCall.regardingobjectidname, 

FilteredPhoneCall.icms_contactname, 

FilteredPhoneCall.owneridname,

FilteredPhoneCall.icms_callendtime, 

FilteredPhoneCall.icms_informationgathered, 

Filteredicms_impcase.icms_casenumber

FROM 

FilteredPhoneCall, 

Filteredicms_impcase

WHERE FilteredPhoneCall.regardingobjectidname 

LIKE '%' + Filteredicms_impcase.icms_casenumber + '%'

Как мне изменить мой запрос, чтобы он указывал, что вся информация должна быть из одного случая. Вот несколько фотографий двух таблиц, к которым я пытаюсь присоединиться для ясности:

Таблица FilteredPhoneCall и Filteredicms_impcase

Должен ли я использовать внутренний оператор соединения? Также позвольте мне прояснить мой мыслительный процесс о том, почему я использую оператор LIKE, из-за того, как строки в системе, FilteredPhoneCall.regardingobjectidname отформатирован так: Название компании / CaseID , мне нужна вторая половина этого значения, CaseID , чтобы объединить таблицы, чтобы получить конкретное значение регистра.

А) мой синтаксис работает так, как я думаю, работает?

B) я должен использовать более конкретный идентификатор, например, INNER JOIN?

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Я бы преобразовал «относительно имени объекта id» и выполнил бы соединение явно:

SELECT 

FilteredPhoneCall.regardingobjectidname, 

FilteredPhoneCall.icms_contactname, 

FilteredPhoneCall.owneridname,

FilteredPhoneCall.icms_callendtime, 

FilteredPhoneCall.icms_informationgathered, 

Filteredicms_impcase.icms_casenumber

FROM 

FilteredPhoneCall

INNER JOIN Filteredicms_impcase

ON SUBSTRING_INDEX(FilteredPhoneCall.regardingobjectidname,'/',-1) =

Filteredicms_impcase.icms_casenumber

Подробности смотрите в этом посте: SQL ВЫБЕРИТЕ все после определенного символа

0 голосов
/ 12 мая 2018

Не используйте «,» для объединения двух таблиц. Это хуже, чем перекрестные соединения

Преобразовать во внутреннее соединение, как показано ниже:

SELECT 

FPC.regardingobjectidname, 

FPC.icms_contactname, 

FPC.owneridname,

FPC.icms_callendtime, 

FPC.icms_informationgathered, 

FC.icms_casenumber

FROM 

FilteredPhoneCall FPC 

INNER JOIN Filteredicms_impcase FC

ON FPC.regardingobjectid = FC.icms_casenumberid

WHERE FPC.regardingobjectidname 

LIKE '%' + FC.icms_casenumber + '%'
...