Переключение на Главную Страницу Страницы: 1 2 3 [4]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Помогите с соединениями (число прочтений - 14542 )
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #45 - 19. Ноября 2007 :: 12:47
Печать  
NickAn писал(а) 19. Ноября 2007 :: 12:40:
Уточни.
Запрос по справочнику?


По какому справочнику? Напиши твой запрос по документам, чтобы в нём были все документы какие тебе нужны
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #46 - 19. Ноября 2007 :: 16:16
Печать  
Знаешь у меня че то не выходит. написал типа так, но выводит только по первому запросу клиента
Код
Выбрать все
|SELECT
	|	СпрК.ID as Клиент
	|	,Жур.IDDOC as [Док $Документ]
	|	,Жур.IDDOCDEF as Док_вид
	|FROM
	|	_1SJourn as Жур
	|Inner JOIN
	|	$Документ.ПриходнаяНакладная  ДПН (nolock) on (ДПН.IDDOC = Жур.IDDOC)
	|LEFT JOIN
	|	$Справочник.Клиенты СпрК ON $ВидСправочника36.Клиенты + СпрК.ID = $ДПН.Клиент
	|WHERE
	|  Жур.Date_Time_IDDoc BETWEEN :ДатаС AND :ДатаПо~
	|Union all
	|SELECT
	|	СпрК.ID as Клиент
	|	,Жур.IDDOC as [Док $Документ]
	|	,Жур.IDDOCDEF as Док_вид
	|FROM
	|	_1SJourn as Жур
	|Inner JOIN
	|	$Документ.РасходнаяНакладная  ДРН (nolock) on (ДРН.IDDOC = Жур.IDDOC)
	|LEFT JOIN
	|	$Справочник.Клиенты СпрК ON $ВидСправочника36.Клиенты + СпрК.ID = $ДРН.Клиент
	|WHERE
	|  Жур.Date_Time_IDDoc BETWEEN :ДатаС AND :ДатаПо~ 


Ну я тебя так понял
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #47 - 20. Ноября 2007 :: 02:32
Печать  
Вот тебе один из вариантов:

Код
Выбрать все
Select
   .....
 ( CASE
  WHEN iddocdef = $ВидДокумента.Документ1  THEN Док1.Клиент
  WHEN iddocdef = $ВидДокумента.Документ2  THEN Док2.Клиент
  WHEN iddocdef = $ВидДокумента.Документ3  THEN Док3.Клиент
 .........
  ELSE ....
  END) as  [Клиент Справочник.Клиенты]
FROM
_1SJourn as Жур
Inner JOIN
$Документ.Документ1  Док1 (nolock) on (Док1.IDDOC = Жур.IDDOC)
Inner JOIN
$Документ.Документ2  Док2 (nolock) on (Док2.IDDOC = Жур.IDDOC)
Inner JOIN
$Документ.Документ3  Док3 (nolock) on (Док3.IDDOC = Жур.IDDOC)
........................
WHERE .......................

 



Если тебе в запросе реквизиты справочника клиены не нужны то этого тебе должно быть достаточно
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #48 - 20. Ноября 2007 :: 07:10
Печать  
Цитата:
( CASE
  WHEN iddocdef = $ВидДокумента.Документ1  THEN Док1.Клиент
  WHEN iddocdef = $ВидДокумента.Документ2  THEN Док2.Клиент
  WHEN iddocdef = $ВидДокумента.Документ3  THEN Док3.Клиент
.........
  ELSE ....
  END) as  [Клиент Справочник.Клиенты]
Дело в том что такая конструкция выдает внутреннее имя или вообще говорит объект не найден. но все же хотелось бы, чтобы была возможность вытянуть и другие реквизиты. Есть ли вариант сделать это через соединения со справочником
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #49 - 20. Ноября 2007 :: 07:18
Печать  
NickAn писал(а) 20. Ноября 2007 :: 07:10:
Цитата:
( CASE
 WHEN iddocdef = $ВидДокумента.Документ1  THEN Док1.Клиент
 WHEN iddocdef = $ВидДокумента.Документ2  THEN Док2.Клиент
 WHEN iddocdef = $ВидДокумента.Документ3  THEN Док3.Клиент
.........
 ELSE ....
 END) as  [Клиент Справочник.Клиенты]
Дело в том что такая конструкция выдает внутреннее имя или вообще говорит объект не найден. но все же хотелось бы, чтобы была возможность вытянуть и другие реквизиты. Есть ли вариант сделать это через соединения со справочником


Но запрос выполняется нормально? Покажи запрос
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #50 - 20. Ноября 2007 :: 10:54
Печать  
Код
Выбрать все
|SELECT
	|	(Case
	|	When Жур.IDDOCDEF=$ВидДокумента.ПриходнаяНакладная Then $ДПН.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента.ВозвратнаяНакладная Then $ДВН.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента.РозничнаяНакладная Then $ДРН.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента.ВозвратПоставщику Then $ДВП.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента.РасходнаяНакладная Then $ДРас.Клиент
	|	Else :ПустоеЗначениеКлиенты End) as Клиент
	|	,Жур.IDDOC as [Док $Документ]
	|	,Жур.IDDOCDEF as Док_вид
	|FROM
	|	_1SJourn as Жур (nolock)
	|Left JOIN
	|	$Документ.ПриходнаяНакладная  ДПН (nolock) on (ДПН.IDDOC = Жур.IDDOC)
	|Left JOIN
	|	$Документ.РасходнаяНакладная  ДРас (nolock) on (ДРас.IDDOC = Жур.IDDOC)
	|Left JOIN
	|	$Документ.ВозвратнаяНакладная ДВН (nolock) on (ДВН.IDDoc = Жур.IDDoc)
	|Left JOIN
	|	$Документ.РозничнаяНакладная ДРН (nolock) on (ДРН.IDDoc = Жур.IDDoc)
	|Left JOIN
	|	$Документ.ВозвратПоставщику ДВП (nolock) on (ДВП.IDDoc = Жур.IDDoc)
	|WHERE
	|  Жур.Date_Time_IDDoc BETWEEN :ДатаС AND :ДатаПо~ 


У меня дело в том, что почти во всех документах клиент не определенного вида. Поэтому было бы не плохо отсечь ВидСправочника.  для определения клиента
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #51 - 20. Ноября 2007 :: 11:04
Печать  
Теперь делаешь так:

Код
Выбрать все
Select
 Док.*,
 СпрК.Реквизит1,
 СпрК.Реквизит2,
 ................
FROM
(
|SELECT
|(Case
|When Жур.IDDOCDEF=$ВидДокумента.ПриходнаяНакладная Then $ДПН.Клиент
|When Жур.IDDOCDEF=$ВидДокумента.ВозвратнаяНакладная Then $ДВН.Клиент
|When Жур.IDDOCDEF=$ВидДокумента.РозничнаяНакладная Then $ДРН.Клиент
|When Жур.IDDOCDEF=$ВидДокумента.ВозвратПоставщику Then $ДВП.Клиент
|When Жур.IDDOCDEF=$ВидДокумента.РасходнаяНакладная Then $ДРас.Клиент
|Else :ПустоеЗначениеКлиенты End) as Клиент
|,Жур.IDDOC as [Док $Документ]
|,Жур.IDDOCDEF as Док_вид
|FROM
|_1SJourn as Жур (nolock)
|Left JOIN
|$Документ.ПриходнаяНакладная  ДПН (nolock) on (ДПН.IDDOC = Жур.IDDOC)
|Left JOIN
|$Документ.РасходнаяНакладная  ДРас (nolock) on (ДРас.IDDOC = Жур.IDDOC)
|Left JOIN
|$Документ.ВозвратнаяНакладная ДВН (nolock) on (ДВН.IDDoc = Жур.IDDoc)
|Left JOIN
|$Документ.РозничнаяНакладная ДРН (nolock) on (ДРН.IDDoc = Жур.IDDoc)
|Left JOIN
|$Документ.ВозвратПоставщику ДВП (nolock) on (ДВП.IDDoc = Жур.IDDoc)
|WHERE
|  Жур.Date_Time_IDDoc BETWEEN :ДатаС AND :ДатаПо~ ) as Док
Left join $Справочник.Клиенты СпрК (nolock) on СпрК.id = Док.Клиент
 



Про неопределённый вид не понял, у тебя клиенты не в одном справочнике хранятся?
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #52 - 20. Ноября 2007 :: 12:22
Печать  
Бывает вместо клиента выбирается МОЛ (Сотрудники)
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #53 - 20. Ноября 2007 :: 12:30
Печать  
NickAn писал(а) 20. Ноября 2007 :: 12:22:
Бывает вместо клиента выбирается МОЛ (Сотрудники)

А реквизиты клиента тебе в запросе для чего нужны? Просто вывести или для фильтра?
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #54 - 20. Ноября 2007 :: 12:40
Печать  
Нет они мне не нужны пока, но дальше могут понадибиться
  
Наверх
 
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #55 - 20. Ноября 2007 :: 16:15
Печать  
Все заработало как и хотелось бы, но у меня в Приходной Накладной в клиенте может быть и сотрудник. Я написал так
Код
Выбрать все
|SELECT
	|	COALESCE(СпрК.Descr, СпрC.Descr) as Клиент_Наименование
        |	,Док.*
	|FROM
	|(SELECT
	|	(Case
	|	When Жур.IDDOCDEF=$ВидДокумента.ПриходнаяНакладная Then $ДПН.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента.ВозвратнаяНакладная Then $ВидСправочника36.Клиенты +  $ДВН.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента.РозничнаяНакладная Then $ВидСправочника36.Клиенты + $ДРН.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента.ВозвратПоставщику Then $ВидСправочника36.Клиенты + $ДВП.Клиент
	|	When Жур.IDDOCDEF=$ВидДокумента.РасходнаяНакладная Then $ВидСправочника36.Клиенты + $ДРас.Клиент
	|	Else :ПустоеЗначениеКлиенты End) as Клиент
	|	,Жур.IDDOC as [Докум $Документ]
	|	,Жур.IDDOCDEF as Докум_вид
	|FROM
	|	_1SJourn as Жур (nolock)
	|Left JOIN
	|	$Документ.ПриходнаяНакладная  ДПН (nolock) on (ДПН.IDDOC = Жур.IDDOC)
...................
	|WHERE
	|  Жур.Date_Time_IDDoc BETWEEN :ДатаС AND :ДатаПо~) as Док
	|LEFT JOIN  
	|	$Справочник.Клиенты СпрК ON $ВидСправочника36.Клиенты + СпрК.ID=Док.Клиент
	|LEFT JOIN
	|	$Справочник.Сотрудники СпрС ON $ВидСправочника36.Сотрудники + СпрС.ID=Док.Клиент 


Ошибка: The column prefix 'СпрС does not match with a table name or alias name used in the query
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Помогите с соединениями
Ответ #56 - 20. Ноября 2007 :: 21:02
Печать  
WHERE обычно идет после соединении (LEFT JOIN)
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #57 - 21. Ноября 2007 :: 02:20
Печать  
Цитата:
WHERE обычно идет после соединении (LEFT JOIN)

У него там подзапрос та что всё ОК
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #58 - 21. Ноября 2007 :: 02:28
Печать  
Для начала проверь везде ли в СпрC у тебя С русская?
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Помогите с соединениями
Ответ #59 - 21. Ноября 2007 :: 07:04
Печать  
Действительно 'С' скорей всего стояла не русская, хотя вроде и до этого проверял? Озадачен
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 
ОтправитьПечать