|
v8: 8.2 Непонятки с запросом | ☑ | ||
|---|---|---|---|---|
|
0
Aswed
11.10.11
✎
12:52
|
Если формирую запрос так
ВЫБРАТЬ | БонусыСотрудниковОбороты.Автомобиль.Модель.Наименование + "" "" + БонусыСотрудниковОбороты.Автомобиль.VIN КАК ПечАвто, | ЕСТЬNULL(БонусыСотрудниковОбороты.МаржаОборот, 0) КАК Маржа, | ЕСТЬNULL(БонусыСотрудниковОбороты.МаржаНЕТТООборот, 0) КАК МаржаБезНДС, | ЕСТЬNULL(БонусыСотрудниковОбороты.ПродажнаяСтоимостьОборот, 0) КАК ЦенаРеализации, | ЕСТЬNULL(БонусыСотрудниковОбороты.СуммаБонусаОборот, 0) КАК Бонус, | ВЫБОР | КОГДА &ВыполнениеПланаОплат = ИСТИНА | ТОГДА ЕСТЬNULL(БонусыСотрудниковОбороты.СуммаБонусаПланОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК БонусЗаПлан, | ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СтраховаяПремияОборот, 0) КАК СуммаСтраховойПремии, | ЕСТЬNULL(БонусыЗаСтраховкуОбороты.КомиссионноеВознаграждениеОборот, 0) КАК МаржаСоСтраховки, | ЕСТЬNULL(БонусыЗаСтраховкуОбороты.КомиссионноеВознаграждениеНеттоОборот, 0) КАК МаржаСоСтраховкиБезНДС, | ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаОборот, 0) КАК БонусОтСтраховки, | ВЫБОР | КОГДА &ВыполнениеПланаСтраховок = ИСТИНА | ТОГДА ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаПланОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК БонусОтСтраховкиПлан, | ЕСТЬNULL(ДополнительноеОборудованиеСрезПоследних.СуммаОборудования, 0) КАК ЦенаДопОборудования, | ЕСТЬNULL(ДополнительноеОборудованиеСрезПоследних.СуммаОборудования * &ПроцентВыделения / 100 * &ПроцентВыделенияДолжность / 100, 0) КАК БонусЗаДопы, | ЕСТЬNULL(БонусыСотрудниковОбороты.СуммаБонусаОборот, 0) + ВЫБОР | КОГДА &ВыполнениеПланаОплат = ИСТИНА | ТОГДА БонусыСотрудниковОбороты.СуммаБонусаПланОборот | ИНАЧЕ 0 | КОНЕЦ + ЕСТЬNULL(ДополнительноеОборудованиеСрезПоследних.СуммаОборудования * &ПроцентВыделения / 100 * &ПроцентВыделенияДолжность / 100, 0) + ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаОборот, 0) + ВЫБОР | КОГДА &ВыполнениеПланаСтраховок = ИСТИНА | ТОГДА ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаПланОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК ИтогоБонуса, | ЕСТЬNULL(БонусыСотрудниковОбороты.СуммаБонусаОборот, 0) + ВЫБОР | КОГДА &ВыполнениеПланаОплат = ИСТИНА | ТОГДА БонусыСотрудниковОбороты.СуммаБонусаПланОборот | ИНАЧЕ 0 | КОНЕЦ + ЕСТЬNULL(ДополнительноеОборудованиеСрезПоследних.СуммаОборудования * &ПроцентВыделения / 100 * &ПроцентВыделенияДолжность / 100, 0) + ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаОборот, 0) + ВЫБОР | КОГДА &ВыполнениеПланаСтраховок = ИСТИНА | ТОГДА ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаПланОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК Итого, | ЕСТЬNULL(ШтрафыПоМашинам.Штраф, 0) КАК ШтрафЗаОборачиваемость |ИЗ | РегистрНакопления.БонусыСотрудников.Обороты(&НачалоПериода, &ОкончаниеПериода, , Сотрудник = &Сотрудник) КАК БонусыСотрудниковОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БонусыЗаСтраховку.Обороты КАК БонусыЗаСтраховкуОбороты | ПО БонусыСотрудниковОбороты.Автомобиль = БонусыЗаСтраховкуОбороты.Автомобиль | И БонусыСотрудниковОбороты.Сотрудник = БонусыЗаСтраховкуОбороты.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительноеОборудование.СрезПоследних КАК ДополнительноеОборудованиеСрезПоследних | ПО БонусыСотрудниковОбороты.Автомобиль = ДополнительноеОборудованиеСрезПоследних.Автомобиль | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрафыПоМашинам КАК ШтрафыПоМашинам | ПО БонусыСотрудниковОбороты.Автомобиль = ШтрафыПоМашинам.Автомобиль То выводятся данные как надо, но без ограничения периода. Когда вывожу так ВЫБРАТЬ | БонусыСотрудниковОбороты.Автомобиль.Модель.Наименование + "" "" + БонусыСотрудниковОбороты.Автомобиль.VIN КАК ПечАвто, | ЕСТЬNULL(БонусыСотрудниковОбороты.МаржаОборот, 0) КАК Маржа, | ЕСТЬNULL(БонусыСотрудниковОбороты.МаржаНЕТТООборот, 0) КАК МаржаБезНДС, | ЕСТЬNULL(БонусыСотрудниковОбороты.ПродажнаяСтоимостьОборот, 0) КАК ЦенаРеализации, | ЕСТЬNULL(БонусыСотрудниковОбороты.СуммаБонусаОборот, 0) КАК Бонус, | ВЫБОР | КОГДА &ВыполнениеПланаОплат = ИСТИНА | ТОГДА ЕСТЬNULL(БонусыСотрудниковОбороты.СуммаБонусаПланОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК БонусЗаПлан, | ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СтраховаяПремияОборот, 0) КАК СуммаСтраховойПремии, | ЕСТЬNULL(БонусыЗаСтраховкуОбороты.КомиссионноеВознаграждениеОборот, 0) КАК МаржаСоСтраховки, | ЕСТЬNULL(БонусыЗаСтраховкуОбороты.КомиссионноеВознаграждениеНеттоОборот, 0) КАК МаржаСоСтраховкиБезНДС, | ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаОборот, 0) КАК БонусОтСтраховки, | ВЫБОР | КОГДА &ВыполнениеПланаСтраховок = ИСТИНА | ТОГДА ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаПланОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК БонусОтСтраховкиПлан, | ЕСТЬNULL(ДополнительноеОборудованиеСрезПоследних.СуммаОборудования, 0) КАК ЦенаДопОборудования, | ЕСТЬNULL(ДополнительноеОборудованиеСрезПоследних.СуммаОборудования * &ПроцентВыделения / 100 * &ПроцентВыделенияДолжность / 100, 0) КАК БонусЗаДопы, | ЕСТЬNULL(БонусыСотрудниковОбороты.СуммаБонусаОборот, 0) + ВЫБОР | КОГДА &ВыполнениеПланаОплат = ИСТИНА | ТОГДА БонусыСотрудниковОбороты.СуммаБонусаПланОборот | ИНАЧЕ 0 | КОНЕЦ + ЕСТЬNULL(ДополнительноеОборудованиеСрезПоследних.СуммаОборудования * &ПроцентВыделения / 100 * &ПроцентВыделенияДолжность / 100, 0) + ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаОборот, 0) + ВЫБОР | КОГДА &ВыполнениеПланаСтраховок = ИСТИНА | ТОГДА ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаПланОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК ИтогоБонуса, | ЕСТЬNULL(БонусыСотрудниковОбороты.СуммаБонусаОборот, 0) + ВЫБОР | КОГДА &ВыполнениеПланаОплат = ИСТИНА | ТОГДА БонусыСотрудниковОбороты.СуммаБонусаПланОборот | ИНАЧЕ 0 | КОНЕЦ + ЕСТЬNULL(ДополнительноеОборудованиеСрезПоследних.СуммаОборудования * &ПроцентВыделения / 100 * &ПроцентВыделенияДолжность / 100, 0) + ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаОборот, 0) + ВЫБОР | КОГДА &ВыполнениеПланаСтраховок = ИСТИНА | ТОГДА ЕСТЬNULL(БонусыЗаСтраховкуОбороты.СуммаБонусаПланОборот, 0) | ИНАЧЕ 0 | КОНЕЦ КАК Итого, | ЕСТЬNULL(ШтрафыПоМашинам.Штраф, 0) КАК ШтрафЗаОборачиваемость |ИЗ | РегистрНакопления.БонусыСотрудников.Обороты(&НачалоПериода, &ОкончаниеПериода, , Сотрудник = &Сотрудник) КАК БонусыСотрудниковОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.БонусыЗаСтраховку.Обороты КАК БонусыЗаСтраховкуОбороты | ПО БонусыСотрудниковОбороты.Автомобиль = БонусыЗаСтраховкуОбороты.Автомобиль | И БонусыСотрудниковОбороты.Сотрудник = БонусыЗаСтраховкуОбороты.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительноеОборудование.СрезПоследних КАК ДополнительноеОборудованиеСрезПоследних | ПО БонусыСотрудниковОбороты.Автомобиль = ДополнительноеОборудованиеСрезПоследних.Автомобиль | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрафыПоМашинам КАК ШтрафыПоМашинам | ПО БонусыСотрудниковОбороты.Автомобиль = ШтрафыПоМашинам.Автомобиль |ГДЕ | ШтрафыПоМашинам.НачалоПериода = &НачалоПериода | И ШтрафыПоМашинам.ОкончаниеПериода = &ОкончаниеПериода | И ШтрафыПоМашинам.ДилерскийЦентр = &ДилерскийЦентр То несмотря на левое соединение БонусыСотрудниковОбороты с таблицей ШтрафыПоМашинам в результате запроса выдаются только те машины которые имеются в таблице ШтрафыПоМашинам. Т.е. запрос формируется как будто я делаю правое соединение. Кто нить может сказать что я не правильно сделал? |
|||
|
1
Aswed
11.10.11
✎
12:55
|
Когда же сделал вложенный запрос а потом его объединил то получил данные которые и должны были быть.
Чертовщина какая то... |
|||
|
2
catena
11.10.11
✎
12:56
|
Что значит - "не смотря на левое соединение"? Как раз ПОТОМУ, что левое соединение, так и выводится.
|
|||
|
3
Aswed
11.10.11
✎
12:57
|
(2) левое соединение таблицы БОНУСЫ с таблицей ШТРАФЫ
|
|||
|
4
catena
11.10.11
✎
12:57
|
(1)Условия ставим на всю выборку - получаем только условные записи.
|
|||
|
5
catena
11.10.11
✎
12:59
|
(3)Блин, правильно! А потом отбираешь:
ГДЕ | ШтрафыПоМашинам.НачалоПериода = &НачалоПериода | И ШтрафыПоМашинам.ОкончаниеПериода = &ОкончаниеПериода | И ШтрафыПоМашинам.ДилерскийЦентр = &ДилерскийЦентр А теперь подумай, что у тебя там, где не соединилось??? |
|||
|
6
Aleks73
11.10.11
✎
13:00
|
выполни и выведи каждую часть сложного запроса в отдельные тз. и увидишь где плохо
|
| Форум | Правила | Описание | Секции | Поиск |