Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема с выводом  [new]
arslanov_a
Member

Откуда:
Сообщений: 17
Добрый день. Прошу проконсультировать. Связал три таблицы, работает, но при добавлении условия 'Определение недостающей информации' ничего не выводит, и без ошибок. С чем это может быть связано?

 
select
c.Number
from
[Case] c 
left join Activity act on (c.ParentActivityId = act.Id)
left join ActivityCategory actc on (act.ActivityCategoryId = actc.Id)
where actc.Name = 'Определение недостающей информации'


К сообщению приложен файл. Размер - 18Kb
5 июл 18, 09:23    [21544822]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
arslanov_a,

"actc.Name = " уберите под join иначе вы получаете INNER JOIN вместо ваших LEFT
5 июл 18, 09:29    [21544837]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
arslanov_a,

написав данное условие в where вы превратили свой left join в inner join

либо перенесите в on, либо обработайте вариант с actc.Name is null
5 июл 18, 09:29    [21544840]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30701
TaPaK
arslanov_a,

"actc.Name = " уберите под join иначе вы получаете INNER JOIN вместо ваших LEFT
ИМХО ему и нужен INNER JOIN
arslanov_a
Связал три таблицы, работает, но при добавлении условия 'Определение недостающей информации' ничего не выводит, и без ошибок. С чем это может быть связано?
С тем, что нет записей, подходящих под ваши условия.
Выведите те записи из этих трёх таблиц, которые, по вашему мнению, должны связаться в запросе, и внимательно посмотрите на них, проанализируйте.
5 июл 18, 09:45    [21544890]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
arslanov_a
Member

Откуда:
Сообщений: 17
TaPaK
"actc.Name = " уберите под join иначе вы получаете INNER JOIN вместо ваших LEFT


Думаю да, проблема в этом. Подскажите пожалуйста, куда вы имеете ввиду убрать? sql только изучаю. Спасибо.
5 июл 18, 11:17    [21545248]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
arslanov_a
Member

Откуда:
Сообщений: 17
TaPaK,

Убрал под join, но фильтр то нужный мне, не применяется. Он показывает все номера таблицы Case.

select
c.Number
from
[Case] c
left join Activity on Activity.Id = c.ParentActivityId
left join ActivityCategory on (ActivityCategory.Id = Activity.ActivityCategoryId) 
and (ActivityCategory.Name = 'Определение недостающей информации')
5 июл 18, 15:04    [21546300]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
arslanov_a,

сначала опеделитесь что же вам надо
5 июл 18, 15:06    [21546313]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
arslanov_a
Member

Откуда:
Сообщений: 17
TaPaK,

Нужны все номера таблицы Case, где где есть название 'Определение недостающей информации' таблицы ActivityCategory.
Case связан только с Activity, а Activity связан только с ActivityCategory
5 июл 18, 15:18    [21546352]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
londinium
Member

Откуда: Киев
Сообщений: 1135
arslanov_a,
автор
Нужны все номера таблицы Case, где где есть название 'Определение недостающей информации' таблицы ActivityCategory.

Давайте тогда по шагам:
SELECT TOP 5 A.*
FROM ActivityCategory A
WHERE A.[NAME]='Определение недостающей информации'

возвращает записи?
5 июл 18, 15:31    [21546386]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
arslanov_a
Member

Откуда:
Сообщений: 17
londinium,

да, возвращает

К сообщению приложен файл. Размер - 4Kb
5 июл 18, 15:37    [21546404]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30701
arslanov_a
да, возвращает
А такой?
SELECT TOP 5 A.*
FROM ActivityCategory AC
join Activity A on AC.Id = A.ActivityCategoryId
WHERE AC.[NAME]='Определение недостающей информации'
5 июл 18, 15:43    [21546436]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
arslanov_a
Member

Откуда:
Сообщений: 17
alexeyvg,

Да, возвращает
5 июл 18, 15:55    [21546496]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
alexeyvg,
offtop
+
ложечку за маму, ложечку за dba
5 июл 18, 15:57    [21546506]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с выводом  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30701
arslanov_a
alexeyvg,

Да, возвращает
Значит, выборка:
select *
from [Case] c
where ParentActivityId = <то значение Id, которое вам вернуло в предыдущем запросе>
ничего не возвращает?
Тогда получается, что в [Case] просто нет записей, которые относятся к той Activity, которая относится к той категории, имя которой 'Определение недостающей информации'
5 июл 18, 18:51    [21547159]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить