powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Left Join с двумя условиями... Как?
11 сообщений из 11, страница 1 из 1
Left Join с двумя условиями... Как?
    #33869682
Код: plaintext
1.
2.
3.
4.
5.
select
        s.Name
from
	Seller as s
left join
	Sller_item si on s.s_id = si.s_id and si.s_type =  [b]0 [/b]

Как в Кристале сделать такую конструкцию, где в объединениии два условия и второе условие равно конкретному чилу, а не связки с другим полем?
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33869776
может я не очень корректно поставил вопрос.
Исправляюсь:
использовать запрос в Кристале в моем случае нельзя
надо организовать такую связ посредством связей с таблицами.
Код: plaintext
1.
2.
3.
4.
5.
select
        s.Name
from
	Seller as s
left join
	Sller_item si on s.s_id = si.s_id and si.s_type =  0 
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33869821
ShadowCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select
s.Name
from
Seller as s
left join
Sller_item si on s.s_id = si.s_id WHERE si.s_type = 0
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33869874
У меня селект сам выглядит приблизительно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select
        s.Name
from
	Seller as s
left join
	Sller_item si on s.s_id = si.s_id and si.s_type =  0 
left join
	Sller_item si1 on s.s_id = si.s_id1 and si.s_type =  1 
left join
	Sller_item si2 on s.s_id = si.s_id2 and si.s_type =  2 
left join
	Sller_item si3 on s.s_id = si.s_id3 and si.s_type =  3 


Надо не используя никакие селекты осуществить эту связку в структуре таблиц через DataBase Fields, если этого достаточно.

такое можно осуществить?
Как?
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33870000
ShadowCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создай 4 алиаса одной таблицы Sller_item, а потом на уровне Select Expert создай ограничения.
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33871097
ShadowCat - ПАСИБА!
дельный совет!
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33871238
Рано обрадовался!

в общем так работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select
        s.Name
from
	Seller as s
left join
	Sller_item si on s.s_id = si.s_id and si.s_type =  0 
left join
	Sller_item si1 on s.s_id = si.s_id1 and si1.s_type =  1 
left join
	Sller_item si2 on s.s_id = si.s_id2 and si2.s_type =  2 
left join
	Sller_item si3 on s.s_id = si.s_id3 and si3.s_type =  3 
where s.criteria =  130 

а вот так не работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select
        s.Name
from
	Seller as s
left join
	Sller_item si on s.s_id = si.s_id 
left join
	Sller_item si1 on s.s_id = si.s_id1 and si.s_type =  1 
left join
	Sller_item si2 on s.s_id = si.s_id2 and si.s_type =  2 
left join
	Sller_item si3 on s.s_id = si.s_id3 and si.s_type =  3 
where s.criteria =  130 
and si1.s_type =  1 
and si2.s_type =  2 
and si3.s_type =  3 

У меня в Select Expert такая картина:

Код: plaintext
1.
2.
3.
{s.criteria Link} = {?Сriteria} and
{si1.s_type} = "1" and
{si2.s_type} = "2" and
{si3.s_type} = "3" 

в чем ошибка??????
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33871471
ShadowCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горю на работе
Код: plaintext
1.
2.
3.
{s.criteria Link} = {?Сriteria} and
{si1.s_type} = "1" and
{si2.s_type} = "2" and
{si3.s_type} = "3" 

в чем ошибка??????

Помоему надо так
{s.criteria Link} = {?Сriteria} and
({si1.s_type} = "1" or
{si2.s_type} = "2" or
{si3.s_type} = "3")
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33871671
Так тоже не работает
Код: plaintext
1.
2.
3.
{s.criteria Link} = {?Сriteria} and
({si1.s_type} = "1" or
{si2.s_type} = "2" or
{si3.s_type} = "3")
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33871706
Мне помогли переписать запрос.
Теперь нет двойного условия в join

запрос выгляди так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select
        s.Name, s.Percent, ti0.Payment, ........
from
	Seller as s
left join
	Seller_item it0 ON s.s_id = it0.it_id 
left join
	Seller_item it1 ON s.s_id = it1.it_id 
left join
	Seller_item it2 ON s.s_id = it2.it_id 
left join
	Seller_item it3 ON s.s_id = it3.it_id 
where s.criteria =  130 
and (it0.it_type =  0  or it0.it_type is null)
and (it1.it_type =  1  or it1.it_type is null)
and (it2.it_type =  2  or it2.it_type is null)
and (it3.it_type =  3  or it3.it_type is null)


И все бы было чудесно, если бы не то, что в Кристале нельзя в секции
записать конструкцию вида

Код: plaintext
1.
{s.criteria Link} = {?Сriteria} 
and ({it1.s_type} = "1" or {it1.s_type} is null) 

теперь ругается на is null...

что делать дальше? как выполнить условие в Кристале?
...
Рейтинг: 0 / 0
Left Join с двумя условиями... Как?
    #33871753
В общем я нашел как is null заменить в кристале...
Это оказалось IsNull(...)

1. Но вот что интересно, я сделал все изменения в части Select Expert.
вот что у меня записано в Select Expert:

{s.criteria Link} = {?Сriteria}
and ({it0.s_type} = "0" or IsNull({it0.s_type}))
and ({it1.s_type} = "1" or IsNull({it1.s_type}))
and ({it2.s_type} = "2" or IsNull({it2.s_type}))
and ({it3.s_type} = "3" or IsNull({it3.s_type}))

2. Запустил Profiler на свою базу
3. Запустил на выполнение отчет.

В общем Profiler показал, что кристал шлет SQL запросы не так:
Код: plaintext
1.
2.
3.
4.
where s.criteria =  130 
and (it0.it_type =  0  or it0.it_type is null)
and (it1.it_type =  1  or it1.it_type is null)
and (it2.it_type =  2  or it2.it_type is null)
and (it3.it_type =  3  or it3.it_type is null) 

а так
Код: plaintext
where s.criteria =  130 

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


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