Имя: Пароль:
1C
1С v8
Запросы по нескольким виртуальным таблицам регистров.
0 ILM
 
гуру
03.11.11
21:07
1. Другое 67% (2)
2. ЛЕВОЕ СОЕДИНЕНИЕ 33% (1)
3. ОБЪЕДИНИТЬ ВСЕ 0% (0)
Всего мнений: 3

Коллективный разум: как более правильнее делать запросы  по нескольким виртуальным таблицам разных регистров:

1) ЛЕВОЕ СОЕДИНЕНИЕ по отобранным полям
2) ОБЪЕДИНИТЬ ВСЕ, а потом СГРУППИРОВАТЬ
3) Может есть ещё способ
1 Господин ПЖ
 
03.11.11
21:09
нет более правильно... есть более вменяемо плана выполнения запроса
2 rs_trade
 
03.11.11
21:11
(0) зависит от того, что ты хочешь получить. нельзя говорить что левое соединение правильнее чем объединить все. или наоборот.

Другое
3 МишельЛагранж
 
03.11.11
21:23
я вообще против виртуальных таблиц в такой реализации!
лучше бы их не было вовсе, а 1с под давлением сделал бы что-нибудь путное.

Другое
4 ILM
 
гуру
03.11.11
21:31
1)

ВЫБРАТЬ
Регистр1.Документ,
Регистр1.НОменклатура,
Регистр1.КоличествоОстаток - ЕСТЬNULL(Регистр2.КоличествоОстаток, 0) КАК Результат
ИЗ
Регистр1.Остатки(&Дата, Документ = &Заказ) КАК Регистр1
ЛЕВОЕ СОЕДИНЕНИЕ
Регистр2.Остатки(&Дата, Документ = &Заказ) КАК Регистр2
ПО Регистр1.Документ = Регистр2.Документ
И  Регистр1.НОменклатура = Регистр2.НОменклатура

2)

ВЫБРАТЬ
ВложенныйЗапрос.Документ,
ВложенныйЗапрос.НОменклатура,
СУММА(ВложенныйЗапрос.Результат)
ИЗ (ВЫБРАТЬ
Регистр1.Документ,
Регистр1.НОменклатура,
Регистр1.КоличествоОстаток КАК Результат
ИЗ
Регистр1.Остатки(&Дата, Документ = &Заказ) КАК Регистр1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Регистр2.Документ,
Регистр2.Номенклатура,
-Регистр2.КоличествоОстаток КАК Результат) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО
ВложенныйЗапрос.Документ,
ВложенныйЗапрос.НОменклатура

3) Это как?
5 ILM
 
гуру
03.11.11
21:31
Ну как то более SQL-но ))

ЛЕВОЕ СОЕДИНЕНИЕ
6 ilkoder
 
03.11.11
21:36
То есть в первом регистре данные есть всегда, а во втором могут и не быть? а если наоборот, то результат с минусом?
7 ILM
 
гуру
04.11.11
14:49
Те данные, что мне нужны есть всегда...