|
Вложенный запрос в ЛЕВОЕ соединение | ☑ | ||
---|---|---|---|---|
0
YurAnt
26.07.13
✎
14:56
|
Доброго времени суток, господа-форумчане.
Вот разбираюсь со сложными запросами и временными таблицами... Возник кхм... "затуп" Есть 3 сегмента данных. 1) ВЫБРАТЬ ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Наименование КАК ФизЛицоНаименование, ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Код КАК Код, ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид КАК ДокументВид, ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия КАК ДокументСерия, ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер КАК ДокументНомер, ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи КАК ДокументДатаВыдачи, ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК ДокументКемВыдан, ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения КАК ДокументКодПодразделения, ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.ДатаРождения КАК ДатаРождения ИЗ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних 2) ВЫБРАТЬ ГражданствоФизЛицСрезПоследних.Страна КАК Страна ИЗ РегистрСведений.ГражданствоФизЛиц.СрезПоследних 3) ВЫБРАТЬ КонтактнаяИнформация.Представление КАК Представление, КонтактнаяИнформация.Поле1 КАК Поле1, КонтактнаяИнформация.Поле2 КАК Поле2, КонтактнаяИнформация.Поле3 КАК Поле3, КонтактнаяИнформация.Поле4 КАК Поле4, КонтактнаяИнформация.Поле5 КАК Поле5, КонтактнаяИнформация.Поле6 КАК Поле6, КонтактнаяИнформация.Поле7 КАК Поле7, КонтактнаяИнформация.Поле8 КАК Поле8, КонтактнаяИнформация.Поле9 КАК Поле9, КонтактнаяИнформация.Поле10 КАК Поле10, КонтактнаяИнформация.ЗначениеПоУмолчанию КАК ЗначениеПоУмолчанию, КонтактнаяИнформация.ТипДома КАК ТипДома, КонтактнаяИнформация.ТипКорпуса КАК ТипКорпуса, КонтактнаяИнформация.ТипКвартиры КАК ТипКвартиры ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация Итак что хочу получить: берем контактную инфу, и пришиваем к нему левым соединением Страну (из гражд-ва), а затем всю полученную таблицу пришиваем к ПаспортныеДанныеФизЛиц тоже левым соединением. Т.е. ПаспортныеДанные <--- КонтактнаяИнф-я <--- Страна С двумя таблицами проблем не возникло... Например делал так. ВЫБРАТЬ ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Наименование КАК ФизЛицоНаименование, ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Код КАК Код, ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид КАК ДокументВид, ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия КАК ДокументСерия, ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер КАК ДокументНомер, ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи КАК ДокументДатаВыдачи, ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК ДокументКемВыдан, ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения КАК ДокументКодПодразделения, ГражданствоФизЛицСрезПоследних.Страна КАК Страна, ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.ДатаРождения КАК ДатаРождения ИЗ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ГражданствоФизЛицСрезПоследних.ФизЛицо УПОРЯДОЧИТЬ ПО ФизЛицоНаименование АВТОУПОРЯДОЧИВАНИЕ А вот со вложениями немного подзапутался... ВЫБРАТЬ ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Наименование КАК ФизЛицоНаименование, ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Код КАК Код, ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид КАК ДокументВид, ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия КАК ДокументСерия, ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер КАК ДокументНомер, ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи КАК ДокументДатаВыдачи, ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК ДокументКемВыдан, ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения КАК ДокументКодПодразделения, ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.ДатаРождения КАК ДатаРождения ИЗ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ КонтактнаяИнформация.Объект.Ссылка, КонтактнаяИнформация.Представление КАК Представление, КонтактнаяИнформация.Поле1 КАК Поле1, КонтактнаяИнформация.Поле2 КАК Поле2, КонтактнаяИнформация.Поле3 КАК Поле3, КонтактнаяИнформация.Поле4 КАК Поле4, КонтактнаяИнформация.Поле5 КАК Поле5, КонтактнаяИнформация.Поле6 КАК Поле6, КонтактнаяИнформация.Поле7 КАК Поле7, КонтактнаяИнформация.Поле8 КАК Поле8, КонтактнаяИнформация.Поле9 КАК Поле9, КонтактнаяИнформация.Поле10 КАК Поле10, КонтактнаяИнформация.ЗначениеПоУмолчанию КАК ЗначениеПоУмолчанию, КонтактнаяИнформация.ТипДома КАК ТипДома, КонтактнаяИнформация.ТипКорпуса КАК ТипКорпуса, КонтактнаяИнформация.ТипКвартиры КАК ТипКвартиры, ГражданствоФизЛицСрезПоследних.Страна КАК Страна ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних ПО КонтактнаяИнформация.Объект.Ссылка = ГражданствоФизЛицСрезПоследних.ФизЛицо) КАК КонтактнаяИнф ПО КонтактнаяИнф.Объект.Ссылка = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо Что я делаю неверно ? Извиняюсь за "глупые вопросы" поскольку только начал разбираться со сложными запросами и временными таблицами, а потому буду благодарен за любые советы. С ув. YurAnt. |
|||
1
viktor_vv
26.07.13
✎
15:04
|
Нафига тебе в последнем левое соединение ?
ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ) КАК КонтактнаяИнф ПО КонтактнаяИнф.Объект = ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо |
|||
2
viktor_vv
26.07.13
✎
15:05
|
И сюда условие добавь
ИЗ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация Где КонтактнаяИнформация.Объект ССылка Справочник.Физические лица ) КАК КонтактнаяИнф |
|||
3
dk
26.07.13
✎
15:09
|
нафига тренироваться на трехэтажных запросах
выбери по 1-2 поля из каждой таблицы, куда тебе 15 полей? |
|||
4
viktor_vv
26.07.13
✎
15:14
|
И зачем вообще тебе подзапрос
ИЗ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ГражданствоФизЛицСрезПоследних.ФизЛицо ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = КонтактнаяИнформация.Объект И КонтактнаяИнформация.Объект Ссылка Справочник.ФизическиеЛица (и условия ограничивающие выобрку из контактной информации по типу и виду наверное (вид Адрес и тип Физический) ) |
|||
5
YurAnt
29.07.13
✎
06:23
|
Всем спасибо огромное))
Получилось как-то так: ВЫБРАТЬ ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Наименование КАК ФизЛицоНаименование, ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Код КАК Код, ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид КАК ДокументВид, ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия КАК ДокументСерия, ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер КАК ДокументНомер, ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК ДокументКемВыдан, ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи КАК ДокументДатаВыдачи, ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения КАК ДокументКодПодразделения, ГражданствоФизЛицСрезПоследних.Страна КАК Страна, ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.ДатаРождения КАК ДатаРождения, КонтактнаяИнформация.Представление, КонтактнаяИнформация.Поле1, КонтактнаяИнформация.Поле2, КонтактнаяИнформация.Поле3, КонтактнаяИнформация.Поле4, КонтактнаяИнформация.Поле5, КонтактнаяИнформация.Поле6, КонтактнаяИнформация.Поле7, КонтактнаяИнформация.Поле9, КонтактнаяИнформация.Поле10, КонтактнаяИнформация.Комментарий, КонтактнаяИнформация.ЗначениеПоУмолчанию, КонтактнаяИнформация.ТипДома, КонтактнаяИнформация.ТипКорпуса, КонтактнаяИнформация.ТипКвартиры ИЗ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = ГражданствоФизЛицСрезПоследних.ФизЛицо ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо = КонтактнаяИнформация.Объект.Ссылка УПОРЯДОЧИТЬ ПО ФизЛицоНаименование АВТОУПОРЯДОЧИВАНИЕ Клоузед. :) |
|||
6
SeraFim
29.07.13
✎
06:43
|
ну а вообще, правильнее было бы к таблице справочника ФизЛиц присоединять и паспорт, и гражданство, и контактную информацию.
В твоем случае, если у человека не указан паспорт - в выборку он вообще не попадет. + Еще обрати внимание на РС "КонтактнаяИнформация" - там и адрес по прописке, и адрес проживания, и телефон, и тд. Из-за этого можешь получить, что на каждого человека будет по несколько строчек. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |