Имя: Пароль:
1C
 
В чем разница между объединением и полным внешним соединением в запросах?
0 PR
 
26.02.06
01:26
То ли на ночь глядя соображается туго, то ли я никогда этого до конца и не понимал... :))
1 PR
 
26.02.06
01:28
Что-то мне подсказывает, что только в детальных записях :o)
Но так ли это на самом деле?
2 Хорошилов Игорь
 
26.02.06
01:28
имхо, разницы ноль :)
3 PR
 
26.02.06
01:28
Если, к примеру, есть два регистра накопления, один "СуммыПродаж", другой "СебестоимостьПродаж", то что логичнее, ОБЪЕДИНИТЬ или СОЕДИНЕНИЕ?
4 PR
 
26.02.06
01:29
(2) А вот щас тебе (и мне заодно) Стас объяснит, что это не так :))
5 PR
 
26.02.06
01:30
(+3) Меня не пинать, я не извращенец писать продажи в два регистра, это 1С так делает :o)
Да и вопрос не в том, нужно писать продажи в один или в два регистра, вопрос в сабже
6 Волшебник
 
модератор
26.02.06
01:32
соединение пытается сопоставить две записи, т.е. найти соответствие по определенным полям,
а объединение просто объединяет, без попытки поиска

Стыдно, товарищи.
7 PR
 
26.02.06
01:35
Мне стыдно, но тем не менее вопрос :))

Пусть простейший пример, два регистра продаж, в каждом одно измерение Номенклатура, в первом ресурс Себестоимость, во втором ресурс СуммаПродажи.

Если я сделаю объединение, то получу культурный ожидаемый результат, но в чем разница, если я сделаю соединение по номенклатуре, возьму номенклатуру из любого регистра и получу тот же результат.
Или результат будет иным?
8 Волшебник
 
модератор
26.02.06
01:37
Я не знаю, что ты подразумеваешь под "культурным и ожидаемым" результатом. В общем случае результаты запросов будут разными.
9 insider
 
26.02.06
01:37
(0) не знаю, как в 8-ке, в чистом скуле так:
объединение (join) выбирает из двух наборов данных (НД) только совпадающие записи по выбранному ключевому полю, однако есть еще left join и right join - там объединение ведется таким образом, что за основу берется один из НД и в результирующий НД попадают все записи одного НД + совпавшие из другого.
что есть внешенее соединение в терминах 1С для меня, увы, загадка.
10 Волшебник
 
модератор
26.02.06
01:38
(9) То же самое. Только мы еще говорим про FULL OUTER JOIN
11 PR
 
26.02.06
01:38
(8) Я подразумеваю то, что я получу все продажи и все себестоимости товара воедино
12 Волшебник
 
модератор
26.02.06
01:39
Давайте разговаривать в терминах SQL. Смысл дискуссии не изменится.

(11) Давай разговаривать запросами.
13 insider
 
26.02.06
01:39
(10) ага, так и думал, что outer?
тогда первый описанный мною вариант - inner (ну чтоб совпадать в терминах)
14 PR
 
26.02.06
01:39
(12) момент...
15 insider
 
26.02.06
01:39
+13 вопрос в 1-м предложении опечатка
16 PR
 
26.02.06
01:44
1-ЫЙ ЗАПРОС: СОЕДИНЕНИЕ

ВЫБРАТЬ
   СебестоимостьПродажОбороты.Номенклатура,
   СебестоимостьПродажОбороты.СебестоимостьОборот,
   СуммыПродажОбороты.СуммаПродажиОборот
ИЗ
   РегистрНакопления.СуммыПродаж.Обороты КАК СуммыПродажОбороты
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьПродаж.Обороты КАК СебестоимостьПродажОбороты
       ПО СуммыПродажОбороты.Номенклатура = СебестоимостьПродажОбороты.Номенклатура
ИТОГИ
   СУММА(СебестоимостьОборот),
   СУММА(СуммаПродажиОборот)
ПО
   Номенклатура
18 Волшебник
 
модератор
26.02.06
01:45
Подозреваю, что следующий запрос покажет тот самый "культурный и ожидаемый результат":

ВЫБРАТЬ Номенклатура, СУММА(Продажи), СУММА(Себестоимость)
ИЗ
(ВЫБРАТЬ Номенклатура, Продажи, 0 КАК Себестоимость
ИЗ РегистрНакопления.Продажи
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ Номенклатура, 0, Себестоимость
ИЗ РегистрНакопления.Себестоимость
) КАК Вложенный
СГРУППИРОВАТЬ ПО Номенклатура
19 PR
 
26.02.06
01:47
2-ОЙ ЗАПРОС: ОБЪЕДИНЕНИЕ

ВЫБРАТЬ
   СебестоимостьПродажОбороты.Номенклатура,
   СебестоимостьПродажОбороты.СебестоимостьОборот,
   0 КАК СуммаПродажОборот
ИЗ
   РегистрНакопления.СебестоимостьПродаж.Обороты КАК СебестоимостьПродажОбороты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   СуммыПродажОбороты.Номенклатура,
   0,
   СуммыПродажОбороты.СуммаПродажОборот
ИЗ
   РегистрНакопления.СуммыПродаж.Обороты КАК СуммыПродажОбороты
ИТОГИ
   СУММА(СебестоимостьОборот),
   СУММА(СуммаПродажОборот)
ПО
   Номенклатура
20 PR
 
26.02.06
01:48
(17) А зачем в этом случае использовать вложенный запрос?
21 insider
 
26.02.06
01:49
(19) и кто так регистры проектировал...
сорри, просто мысли вслух
(20) это видимо inner join
22 PR
 
26.02.06
01:50
Для коллекции другой пример.
Когда проводится расходная накладная, нужно в одном запросе получить количество, подобранное в доке и остатки из регистра накопления, что правильнее, объединение (с фильтром по номенклатуре в параметрах регистра накопления) или соединение?
23 insider
 
26.02.06
01:51
(22) а операторов типа in там нету?
24 PR
 
26.02.06
01:51
(21) Забей, это я привел упрощенный пример, такого в реальности нет.
Хотя в последней типовой УТ регистра продаж действительно два :o)
25 Волшебник
 
модератор
26.02.06
01:52
(22) Соединение
26 Волшебник
 
модератор
26.02.06
01:52
(23) Есть
27 insider
 
26.02.06
01:52
+23 ну т.е. тра-ля-ля... номенклатура типа in (select from табличная часть) бла-бла...
28 PR
 
26.02.06
01:53
(27) Есть, В, В СПИСКЕ, В ИЕРАРХИИ
29 PR
 
26.02.06
01:54
(25) А почему здесь соединение, а в первом случае объединение? :))
30 PR
 
26.02.06
01:55
Прав ли я в (1)?
31 Волшебник
 
модератор
26.02.06
01:55
(30) В общем, да. Речь именно о детальных записях
32 insider
 
26.02.06
01:56
(28) дык может так и лучше? ну чем объединять, хотя не знаю как 1С себя при этом ведет, там видимо язык запросов писАли по принципу "абы не как у всех", SQL'92 им не писан, блин...
(29) наверное в 1-м случае inner, а во втором right join (если "правая" - это табл. часть дока)
33 Волшебник
 
модератор
26.02.06
01:56
(32) Ну откуда такие выводы? Его писали именно по SQL 92
34 PR
 
26.02.06
01:56
Кстати, объединение просто добавляет только в случае ОБЪЕДИНИТЬ ВСЕ, иначе делается попытка соединить записи в одну ;)
35 insider
 
26.02.06
01:58
(33) та возмушаюсь, что снова язык и логику собственную коверкать :(
(34) это ты что сейчас сказал? правда не понял...
36 Волшебник
 
модератор
26.02.06
01:58
(34) Такое поведение прописано в стандарте на UNION. Так и должно быть. В твоем случае такое поведение нужно обязательно отключить
37 Волшебник
 
модератор
26.02.06
01:58
(35) Никто ничего не коверкал, ни язык, ни логику. В чем проблема-то? Ты не знаешь SQL?
38 PR
 
26.02.06
01:58
Мда, в общем-то, получается, я не вижу смысла вообще использовать полное соединение, так как его всегда можно заменить объединением, да еще при том не париться с проблемой, из какого регистра брать то или иное поле :o)
39 insider
 
26.02.06
01:59
я вами горжусь, и как вы отличаете в этих текстах одно от другого...
40 Волшебник
 
модератор
26.02.06
01:59
(38) Полное соединение и объединение не взаимозаменяемые. Их результаты иногда совпадают, но это частные случаи.
41 Волшебник
 
модератор
26.02.06
02:01
(39) внешнее соединение = outer join или просто join
левое/правое внешнее соединение = left/right join
объединение = union
что тут непонятного?
42 insider
 
26.02.06
02:02
(41) а это: КАК Вложенный в (18) что означало?
43 PR
 
26.02.06
02:03
(35) Я имею в виду, что в случае ОБЪЕДИНИТЬ ВСЕ записи не пытаются соединиться в одну с агрегацией по агрегируемым полям, а в случае ОБЪЕДИНИТЬ пытаются.
То есть, если у меня есть по одной записи в регистрах продаж тапочек, то
1. При ОБЪЕДИНИТЬ ВСЕ будет две детальных записи
  Тапочки 10 (себестоимость)
  Тапочки 20 (сумма продажи)
2. При ОБЪЕДИНИТЬ будет одна запись
  Тапочки 10 (себестоимость) 20 (сумма продажи)

Вроде так :o)
44 insider
 
26.02.06
02:03
+42 ой, понял, видимо вложенный select в 8-ке пишут почему-то после текста запроса
мама, роди меня обратно...
45 PR
 
26.02.06
02:04
(41) Все непонятно :))
Приведи пример (как можно более простой), когда результат будет разным
46 Волшебник
 
модератор
26.02.06
02:06
(44) Что-то я не понял твоего веселья. Что тебя рассмешило?
47 Волшебник
 
модератор
26.02.06
02:07
(45) Нечисловые поля
48 insider
 
26.02.06
02:08
(46) ну во вложенном запросе select сразу пишут, потом что выбирать, потом откуда, потом как (условия), здесь как бы наоборот: уточняем вложенность уже после текста... я не веселюсь, я понимаю что мне на ЭТОМ скоро писАть и я правда в шоке
похоже надо мануал типа запрос на традиционном сиквеле и рядом такой же на v8, чтоб выучить тупо...
49 PR
 
26.02.06
02:09
(47) А пример где? :o)
50 insider
 
26.02.06
02:09
+48 мне там еще много неясно, т.е. ясно, но не могу понять почему так вывернуто
впрочем это оффтопик, сорри
51 PR
 
26.02.06
02:09
(48) Здесь тоже сразу пишут, а вложенность сразу определяется символом (
52 insider
 
26.02.06
02:10
(51) а уточнение нафиг, оно ничего не означает? ("как вложенный")
53 PR
 
26.02.06
02:11
(52) Это альяс, а не уточнение :D
54 PR
 
26.02.06
02:11
Можно было написать КАК Агент007 или КАК ЗдесьБылВася
55 PR
 
26.02.06
02:12
Просто вложенных запросов может быть вагон, надо же их как-то различать :o)
56 Волшебник
 
модератор
26.02.06
02:12
(52) Это всего лишь псевдоним вложенного запроса. Он обязателен.
57 Волшебник
 
модератор
26.02.06
02:13
из-за таких паникеров, как inserter, многие боятся браться за восьмерку
причем не только программисты 7.7, но и программисты с других языков и платформ
58 Волшебник
 
модератор
26.02.06
02:13
insider
59 insider
 
26.02.06
02:14
я правда не въеду нафига он, т.е. правило есть правило, но сбивает с толку, альясы у таблиц или значений каких-нить - это ладно, но вложенные запросы нафиг называть?
(57) все, больше не вношу смуту, беру ЖКК или какие они там теперь и молча читаю :)
60 Волшебник
 
модератор
26.02.06
02:15
(59) Они так и называются - ЖКК. У страха глаза велики.
61 PR
 
26.02.06
02:16
(59) А как ты будешь обращаться к этому вложенному запросу, поля из него брать?
Альяс ему нужен затем же, зачем и таблицам - источникам, для идентификации
62 PR
 
26.02.06
02:17
Так пример к (47) будет? ;)
63 Волшебник
 
модератор
26.02.06
02:17
(62) Придумай его себе сам. Поработай, например, с ценами или скидками контрагентов.
64 insider
 
26.02.06
02:19
(60) ну это ясно, что выучить и понять нормальный программер может много, там с 8-кой еще много моментов из-за которых тормозится обучение: неоправданая цена, сложности с продажей (куча сертификатов и т.п.), перегруженность конф и их требования к ресурсам (снова неоправданные), нет прямых запросов и быстродействие не очень, слишком большой объем баз (как следствие), да много чего.
мне же зарабатывать, а не мучаться хочется, а пока имхо нерентабельно...
(61) мне не нужен вложенный запрос и поля его даром не нужны, мне результирующий НД нужен, что и получаю с помощью запроса
65 PR
 
26.02.06
02:19
Ну скажи что-нить простенькое, с оджним измерением и одним ресурсом.
Можно бессмысленное с точки зрения экономики и вселенского разума :))
66 PR
 
26.02.06
02:21
(64) В смысле неоправдано нИзкая цена, ты не готов работать с таким дешевым продуктом? :))
67 PR
 
26.02.06
02:22
А как ты в результирующем запросе будешь обращаться ко вложенному?
68 PR
 
26.02.06
02:22
(67) Это к (64)
69 Волшебник
 
модератор
26.02.06
02:22
(65) Измерение Номенклатура, регистр Цены и регистр СкидкиПоНоменклатуре. Эту информацию можно получить только соединением (join). При UNION придется использовать извраты типа MAX, но это не гарантирует правильность результата, особенно при двух измерениях (допустим, еще ХарактеристикаНоменклатуры). И без вложенного запроса все равно не обойтись
70 insider
 
26.02.06
02:22
(66) ну бухия дороже, а толку? а про УПП я не говорю, уж лучше написАть самому, а не пытаться внедрять монструозное детище программеров 1С, не только же мое мнение, я не один так думаю :)
(67) скажи честно, зачем? :)
71 Волшебник
 
модератор
26.02.06
02:24
(70) Ты не поверишь, сколько много людей думают, что лучше внедрять типовые конфигурации и дописывать их при необходимости.
72 PR
 
26.02.06
02:24
(70) Ну, здесь примерно такая схема

SELECT
Поле1 из вложенного запроса с именем ?
Поле2 из вложенного запроса с именем ?
ИЗ
(Вложенный запрос без имени), (Вложенный запрос без имени)
73 insider
 
26.02.06
02:26
(72) странно это как-то, почему такая выборка? т.е. логику не понимаю :(
ну нельзя получить в результате комбинации запросов, джойнов и т.п. ОДНУ таблицу в виде результата с полями, которые нужны?
74 PR
 
26.02.06
02:26
(69) Все-равно не понял :o)
А можно пример на пару - тройку записей в каждом регистре
75 PR
 
26.02.06
02:26
(71) Я тоже так думаю :))
76 insider
 
26.02.06
02:27
(70) поверю, знаю что много, но ко мне не за этим приходят :)
эх, не мой рынок...
77 PR
 
26.02.06
02:27
(73) Так вот и получается, что у меня есть ДВА вложенных запроса, из которых я выбираю поля, спрашивается, если поле Поле1 есть в обоих запросах, то как определить, откуда брать?
78 PR
 
26.02.06
02:29
Мда, еще немного и мы сделаем ветку "интересной" :))
79 insider
 
26.02.06
02:31
(77) а, т.е. в синтаксисе ты сразу не указываешь что и откуда брать, а сначала пишешь тексты запросов, а потом уточняешь как бы их взаимодействие?
хм, похоже через полгодика я тут такие ветки с вопросами заводить начну, что нынешние "чайники" просто отдыхают...

(78) ну могу помолчать, мне кажется, что вопросами наводящими вынуждаю более наглядно показать, может еще кто почитает :)
80 PR
 
26.02.06
02:32
(79) Я имел в виду, что она будет длиннее 100 постов ;)
81 Волшебник
 
модератор
26.02.06
02:32
(79) "сначала пишешь тексты запросов, а потом уточняешь как бы их взаимодействие"
Это или гениальная фраза, по которой видно глубину мысли, или наоборот, фраза полного чайника.
82 PR
 
26.02.06
02:33
(79) Я хочу сказать, что если у меня в основном запросе есть два вложенных запроса, то я не знаю бех альясов для запросов из какого именно вложенного запроса я беру Поле1
83 PR
 
26.02.06
02:34
(81) Так мона пример по паре записей из кажого регистра? :))
84 insider
 
26.02.06
02:34
(81) так я и есть чайник, я не понимаю логику просто, будь снисходительнее :)
ага, примеры рулят, а то у меня каша в голове...
85 PR
 
26.02.06
02:35
(+83) А то уж больно хочется уцепить суть, а пока что-то все вокруг да около :o)
86 Волшебник
 
модератор
26.02.06
02:37
Я уже дал вам пример. PR, запускаешь консоль запросов и проверяешь
87 Композитор
 
26.02.06
02:39
Всем спать...
88 Волшебник
 
модератор
26.02.06
02:40
(87) Присоединяюсь к мнению.
89 insider
 
26.02.06
02:41
(87,88) у нас с вами час разница, так что рано еще :)
90 PR
 
26.02.06
02:41
(86) Вот ведь добрый какой :o)
Хорошо, если гора не идет к Магомету... :))

Не хочешь ли ты сказать, уважаемый, что данная ситуация отработается по разному при использовании соединения и объединения?

Записи регистра Цены
1. Тапочки 100
2. Вентилятор 200

Записи регистра СкидкиПоНоменклатуре
1. Тапочки 10%
2. Вентилятор 20%
91 PR
 
26.02.06
02:42
(87) Не мешай увеличивать архив МиСты :))
92 Волшебник
 
модератор
26.02.06
02:45
(90) Добавь еще измерения Тип цен и Тип скидки для разнообразия.
93 PR
 
26.02.06
02:47
(92) OK :))

Записи регистра Цены
1. Тапочки      ПродажнаяЦена    100
2. Вентилятор   ЗакупочнаяЦена   200

Записи регистра СкидкиПоНоменклатуре
1. Тапочки      РозничнаяСкидка  10%
2. Вентилятор   ОптоваяСкидка    20%
94 PR
 
26.02.06
02:50
Разницы не вижу, поскольку в обоих случаях будет две записи :))
Вроде как //тихо в сторону :o)
95 insider
 
26.02.06
02:50
PR, да меня кстати дошло причем псевдонимы, просто в сиквеле это юзают, если нужны группировки по результирующим полям сложного запроса (с объединениями напр.) с групировками, причем по другим полям или с вычислением доп. аггр. величин.
Выходит, что в (79) все было верно :)
(93) имхо что так, что этак сольет все в один... вот только с нечисловыми полями траблы, уточни задачу, точнее пример :)
96 PR
 
26.02.06
02:52
(95) Где траблы-то, нечисловые поля легко "складываются" с NULL в другом запросе :))
97 insider
 
26.02.06
02:56
(96) эт хорошо, если складываются, не везде так просто, как и с алиасами: в сиквеле (нормальном) ты если делаешь запрос, состоящий пускай из двух, так вот они сначала объединятся (напр.), ну или скажем так, преобразуются в результирующий НД, а потом внешним запросом, который их "поглощает" выбираем из результирующего виртуального НД что надо, потому и не въехал, совсем другая логика...
98 PR
 
26.02.06
03:10
(97) Разве в классическом (а не нормальном :)) ) сиквеле нельзя "складывать" поля с NULL?
99 insider
 
26.02.06
03:15
(98) к словам цепляешься, уел, буду корректней в формулировках :)
можно конечно, я там скорее об алиасах писАл, о том, что каждый раз имеем дело с объединенным НД, который не требует уточнения составляющих, т.к. подзапрос уже выполнен и его имя нас не волнует.
100 PR
 
26.02.06
03:16
100
101 insider
 
26.02.06
03:17
(100) ну вот, дождался, ветка стала интересной :)
впрочем мы уж давно отклонились в чисто теоретическую плоскость
102 PR
 
26.02.06
03:18
(99) А записи из этого подзапроса нас волнуют?
Я не имею в виду подзапрос, который используется в условии (то есть в in)
103 insider
 
26.02.06
03:20
допустим мы выбираем из совокупности двух запросов, которые получены с помощью union, так нам не важно как каждый из этих двух назывался, просто даем псевдоним результату их выполнения (т.е. уже объединенному НД) и выбираем из него.
пример можно привести, но он из 77 и без dds общаться будет сложно, а комменты я замучаюсь писать
104 PR
 
26.02.06
03:21
(103) А если у нас join?
105 insider
 
26.02.06
03:22
(104) join вообще не так пишется, т.е. там нет прямого select, т.е. и запроса как такогового нет
ну если можешь очень абстрактно подойти, могу запостить пример, чтоб не "на пальцах"
106 PR
 
26.02.06
03:25
Ситуация очень простая, есть два вложенных запроса, соединеных join'ом, которые выступают в роли источника записей
107 insider
 
26.02.06
03:28
+105 что-то типа выборки остатков, нечитаемо немного, но самое маленькое, что нашел:

   ДатаОст=Формат(НачМесяца(ДобавитьМесяц(ПолучитьДатуТА(),-1)),"ДГГГГММДД");
Дата1  =Формат(НачМесяца(ПолучитьДатуТА()),"ДГГГГММДД");
Дата2  =Формат(ПолучитьДатуТА(),"ДГГГГММДД");
   
Query=CreateObject("ODBCRecordSet");
ТекстЗапроса="--
|select code, sum(NOst1)+sum(Prih1)-sum(Rash1) as NOSER,
|   sum(NOst2)+sum(Prih2)-sum(Rash2) as SERIE
|from (
|select rtrim(s.code) as code,
|    (case when d.sp337=0 then sum(r.sp168) else 0 end) as NOst1, 0 as Prih1, 0 as Rash1,
|    (case when d.sp337=1 then sum(r.sp168) else 0 end) as NOst2, 0 as Prih2, 0 as Rash2
|from rg165 r inner join dh67 d on r.sp169=d.iddoc, sc36 s
|where convert(datetime,r.period)=convert(datetime,'"+ДатаОст+"')
|          and s.id=r.sp167
|group by s.code, d.sp337
|
|union all
|
|select rtrim(s.code) as code,
|    0 as NOst1,
|    (case when (d.sp337=0)and(r.debkred=0) then sum(r.sp168) else 0 end) as Rrih1,
|    (case when (d.sp337=0)and(r.debkred=1) then sum(r.sp168) else 0 end) as Rash1,
|    0 as NOst2,
|    (case when (d.sp337=1)and(r.debkred=0) then sum(r.sp168) else 0 end) as Prih2,
|    (case when (d.sp337=1)and(r.debkred=1) then sum(r.sp168) else 0 end) as Rash2
|from ra165 r inner join dh67 d on r.sp169=d.iddoc inner join _1sjourn j on r.iddoc=j.iddoc, sc36 s
|where left(j.date_time_iddoc,8) between convert(datetime,'"+Дата1+"') and convert(datetime,'"+Дата2+"')
|          and s.id=r.sp167
|group by s.code,d.sp337, r.debkred
|
|) tmp
|group by tmp.code
|";


Это типа выборки всех остатков на опр. дату, попробуй разобраться и поймешь, почему мы говорим на разных языках
108 Волшебник
 
модератор
26.02.06
03:30
Рискну предположить, что этот запрос выполнится в 8.0 практически без изменений.
109 insider
 
26.02.06
03:30
+107 я мог и не писАть вообще псевдоним к результирующему НД, скорее для удобочитаемости, чем из требований синтаксиса
110 insider
 
26.02.06
03:30
(108) форма записи какая-то другая там, вот и получается, что не понимаем друг друга... или только я один не понимаю...
111 PR
 
26.02.06
03:32
Мне вот какая мысль пришла в голову, при использовании соединения я могу управлять полями, по которым хочу соединять записи из двух таблиц, а при объединении нет.
Собственно, пожалуй это единственный случай, очень редкий впрочем, когда нужно использовать соединение.
То есть примерно так: хочу записи из двух таблиц при совпадении поля номенклатура соединить, а при совпадении поля склад не соединять, а оставить две записи
112 insider
 
26.02.06
03:33
(11) при join ты ОБЯЗАН указать общее поле, при union типы и кол-во полей должны сходится - это немного разные вещи
113 PR
 
26.02.06
03:34
(107) Так у тебя union, а я говорю про join :))
114 insider
 
26.02.06
03:35
(113) ты там join не увидел?! да их там хватает...
115 insider
 
26.02.06
03:36
+114 отож, у вас у джойна какой-то странный смысл и написание и вовсе не по стандарту имхо
116 PR
 
26.02.06
03:36
(112) Да, но при соединении я могу соединять, к примеру, по номенклатуре и складу, а могу только по номенклатуре.
При объединении получается соединение записей сразу и по номенклатуре и по складу
117 PR
 
26.02.06
03:37
(114) Там, если я правильно рассмотрел, вложенный запрос получается один, а не два ;)
118 PR
 
26.02.06
03:38
(+117) А поэтому неоднозначности в источнике не возникает и альяс не обязателен :))
119 insider
 
26.02.06
03:38
(116) ну все верно
(117) вложенный запрос состоит из объединенных (union) двух, в каждом из которых куча соединений (join) и case чего в эске наверное и вовсе нету...
120 Волшебник
 
модератор
26.02.06
03:39
(115) Что именно в join_v8 не по стандарту?
(119) case есть в 1С 8.0
121 insider
 
26.02.06
03:40
(118) в классическом sql я не смогу привести пример "неоднозначности" источника, ибо язык этого не предполагает
(120) ну видишь, что мы с PR как будто на разных языках говорим, рассуди или объясни
насчет case - это гут
122 Волшебник
 
модератор
26.02.06
03:40
insider, я предлагаю тебе не поливать 8.0 грязью.
если ты не знаешь возможностей 8.0, то этого не значит, что 1С чего-то не умеет или чему-то не соответствует. Лучше задавай вопросы, читай ЖКК, не забывай почаще добавлять ИМХО.
123 Волшебник
 
модератор
26.02.06
03:41
Рому вообще бывает иногда очень сложно понять. Но легче, чем Гения 1С.
124 PR
 
26.02.06
03:43
(119) Есть, почему нет
Главное, что после выполнения вложенного запроса получается ОДИН, а не ДВА вложенных запроса :o)
А ты попробуй сделать ДВА вложенных запроса в качестве источников данных, соединеных join'ом
125 PR
 
26.02.06
03:44
(121) Еще как предполагает :))
126 insider
 
26.02.06
03:44
(122) грязи никакой не было, я с PR читсто теоретический вопрос обсуждал, про case написал "наверное" (что вроде типа имхо, но это не имхо, т.к. я не знал об этом, а мог лишь предполагать)
в 8-ке попытались сделать адекватный язык запросов - это верно, но почему не обсудить детали? мне нет выгоды от "поливания", и объяснить свое незнание v8 я таким образом не пытаюсь
(123) с Гением не сталкивался как-то... не помню
(124) не могу :) или не понимаю что ты хочешь или в сиквеле так нельзя :)
127 Волшебник
 
модератор
26.02.06
03:46
(126) Скажу офигенную для тебя мысль: язык запросов 1С 8.0 в некоторых момент ПРЕВОСХОДИТ стандартный SQL. Ты поражен?
128 PR
 
26.02.06
03:48
(126) Я хочу примерно следующее (уж не знаю, можно ли):

ВЫБРАТЬ
  ВложЗапрос1.Поле1
  ВложЗапрос2.Поле2
ИЗ
(ВложЗапрос1)
join
(ВложЗапрос2)

Понятно?
129 insider
 
26.02.06
03:49
(127) ну рад скорее :) просто непривычность записи и кажущиеся необычными трактовки сбивают с толку.
P.S. заметь, а до сих пор нифига не ясно, что за такие два набора данных имеет ввиду PR - вот и не знаю, это фича или баг языка или такого и вовсе нет...
(128) принцип матрешки, такая запись как у тебя мне непонятна, точнее я ТОЧНЫЙ эквивалент не могу привести, так не получится, все равно сначала join, потом выборка
130 PR
 
26.02.06
03:51
(129) Да две таблицы просто :))
131 insider
 
26.02.06
03:52
(128) приведи пример что нужно выбрать (простой) а я напишу на сиквеле и там не будет пресловутой неоднозначности
(130) ну например, а? :)
132 PR
 
26.02.06
03:52
(+129) Вооо! Вот про это я и говорю, в классическом SQL наглядность теряется, а здесь я вижу КРАСИВО :)))
133 insider
 
26.02.06
03:53
(132) а, ну ладно, мне там как-то удобнее, да и набирать меньше.
имхо :)
134 PR
 
26.02.06
03:54
(131) Да не надо, при таком подходе конечно не будет неоднозначности :))
Пример простой: таблица остатков товаров и таблица резервов товаров
135 PR
 
26.02.06
03:55
(133) Там читабельность хуже. IMHO :)))
136 Волшебник
 
модератор
26.02.06
03:55
(135) Достаточно бредовое замечание, тебе не кажется?
137 insider
 
26.02.06
03:57
(134) ну вот сверху у меня усложненный вариант, там идет выборка из таблицы остатков и движений, проверяется на определенное поле документа, который является измерением регистра (чтобы разделить остатки по "типам", надо так было), ну и сравнение с позицией ТА, ну это уже тривиально
(135) спорно :) но о вкусах спорить не имеет смысла, так что...
138 insider
 
26.02.06
03:57
+137 плюс джойн с журналом доков, т.к. только там лежит позиция документа
139 PR
 
26.02.06
03:57
(136) Почему? Мне вот например очень важна читабельность запросов :o)
А текст запросов на восьмерке и классическом сиквеле различается, логично?
140 Волшебник
 
модератор
26.02.06
03:57
(137) в 8.0 нет ТА
141 Волшебник
 
модератор
26.02.06
03:58
(139) Они практически не различаются.
142 PR
 
26.02.06
03:58
(141) Ключевое слово практически, не так ли? ;)
143 Волшебник
 
модератор
26.02.06
03:59
(142) Это "практически" не связано с читабельностью.
144 PR
 
26.02.06
04:00
Хотя не спорю, свои пять копеек вносит русский синтаксис ;)
145 insider
 
26.02.06
04:00
(140) в 7.7 на прямых запросах, даже если ТА временно перенесена назад ее тоже нет :)
(141) разве что сравнить с примером... т.е. как бы логично, что вроде все похоже и отличиям взяться неоткула, особенно если латиницей писАть, но вот то, что пишет PR я не могу привинтить к логике сиквела...
146 PR
 
26.02.06
04:00
Щас ветку до 200 догоним, а все почему, а все потому, что нет примера :))
147 insider
 
26.02.06
04:01
(146) примеров было куча :)))
148 PR
 
26.02.06
04:02
(147) Того, которого просил я, не было :))
И не было подтверждения или опровержения (94) ;)
149 acsent
 
26.02.06
04:03
(128) Это классическое умножение таблиц. Замени join на запятую
150 Волшебник
 
модератор
26.02.06
04:04
(146) А мне вот интересно, почему человеку постоянно нужны примеры? Вот сколько угодно дай ему теории, а без примера она непонятна. И достаточно одного примера, чтобы наступило то самое "ПОНЯЛ, ЭВРИКА". Т.е. у человека ИНДУКЦИЯ гораздо важнее ДЕДУКЦИИ. Ну это уже к Rovan'у...
151 insider
 
26.02.06
04:04
(148) ладно, уболтал, при прочих равных условиях, для именно того примера разницы нет
(149) так он об этом? блин... ну зачем же так сложно тогда
152 insider
 
26.02.06
04:05
(150) считаешь, что мышление в-основном строится по принципу от частных утверждений к общим? :)
153 Волшебник
 
модератор
26.02.06
04:07
(152) Я нахожу этому все больше и больше подтверждений. Даже дедукцию можно рассматривать, как обратную индукцию.
154 PR
 
26.02.06
04:08
(150) Потому что думать всегда от общего к частному череп треснет :o)
155 PR
 
26.02.06
04:09
(151) Так вот в том-то и дело, что нет примера, где результат будет РАЗНЫМ, везде получается одинаковым :o)
156 Волшебник
 
модератор
26.02.06
04:10
В качестве примера (заметьте, примера!) давайте напишем две статьи по языку запросов 8.0:
1. Первая - чисто теоретическая, без конкретных примеров
2. Вторая - чисто практическая, только примеры.

Более понятнее, скорее всего, будет вторая. А при чтении первой будет происходить следующий процесс: от высказанного правила будет переход к нескольким конкретным примерам (образам) и затем опять к правилу, но уже с его пониманием.
157 insider
 
26.02.06
04:11
(153) интересная мысль, надо подумать.
(154) да смотря как посмотреть, наоборот как бы проще, но закомплексованность мышления получается, шаблоны сплошные, а если от частных к общим - вероятность неверного скоропостижного обощения...
(156) согласен... вот только учась на примерах хватаешь "обезьяний рефлекс" и мыслишь шаблоном, а код то в статье может быть и неоптимальным, мы же все ошибаемся? вот так и пойми что лучше...
158 insider
 
26.02.06
04:14
+157 к убежденный практик все равно пришел к тому, что теория рулит, т.е. знать задачу глубоко теоретически - и практическая реализация выйдет интереснее, красивей и... необычнее, а наоборот: все заглянем в один справочник и спишем одну и ту же формулу, которую может какой-то ламер нацарапал и будем поколениями ехать по колее, когда вокруг столько простора...
/меня заносит, ладно, вс имхо конечно же/
159 PR
 
26.02.06
04:14
Сначала человек обжигается об огонь, а потом уже делает вывод, что горячее может обжечь, а не сначала он читает инструкцию безопасности, в которой говорится, что горячее может обжечь, из чего он делает вывод, что в костер не нужно совать руки.
Опыт - явление частное, а поскольку опыт первичен, то понятно, что общее проистекает из частного. А вот после появдения общего выявляется необнаруженное в момент опытов частное :))
160 insider
 
26.02.06
04:16
(159) хм... сначала человек прыгает с 14-го этажа и пораскинув мозги понимает, что черепушка не выдержит такого экстрима :))
учатся на своих ошибках далеко не все, уж лучше на чужих :)
161 PR
 
26.02.06
04:16
(160) Да, но чужие ошибки были первей ;)
162 insider
 
26.02.06
04:18
я хотел сказать, что зная сущность процесса можно придумать свой алгоритм, зная готовый алгоритм - нужно начинать учиться думать самостоятельно или остаться навсегда слепым повторением чьего-то творчества, а может и ошибок...
но первый путь гораздо сложнее и нуднее
163 PR
 
26.02.06
04:18
(162) Во-во, я и говорю, череп треснет :))
164 PR
 
26.02.06
04:20
Короче я понял, что примера мне не обломится, пошел я спать :o)
165 insider
 
26.02.06
04:21
(163) ага, и времени в сутках не хватает :)
но всегда был против догм, навязанных аксиом и т.п., хоть и следовал им в процессе обучения (есди жестко держали и заставляли доказывать по учебнику)
(164) спокойной ночи :)
166 insider
 
26.02.06
04:23
всем спасибо за интересное обсуждение, пожалуй и мне пора спать :)
167 PR
 
26.02.06
11:54
Волшебник, а где обещанный вчера пример? :))
168 Волшебник
 
модератор
26.02.06
12:50
(167) Все-таки я надеюсь услышать его от тебя.
169 LobS
 
26.02.06
12:53
PR, я думаю, что в (25) ветке от v8: Вопрос по запросам; будет при соединении пустой запрос
170 PR
 
26.02.06
12:56
(168) Я свое мяу в (93)+(94) сказал :))
171 Vozhd
 
26.02.06
12:56
(169) Не обязательно пустой, может быть и очень полным.
172 SnarkHunter
 
26.02.06
12:56
(169)Смотря какое соединение.
173 PR
 
26.02.06
12:57
(169) А что, там было сказано, что соединение по этому полю, я вот считал, что соединение по ИСТИНА :))
174 PR
 
26.02.06
12:57
(172) Так твой вариант будет? :))
175 SnarkHunter
 
26.02.06
12:58
Мдя...
176 PR
 
26.02.06
12:59
Е мое, куча мегаспецов и НИКТО не может популярно по рабоче-крестьянски привести пример на две таблицы с двумя - тремя записями в каждой, когда соединение и объединение будудт давать разный результат :D
177 SnarkHunter
 
26.02.06
13:01
(176)Для того примера:

полное соединение
1    null
2    null
3    null
null 4
null 5
null 6
178 Vozhd
 
26.02.06
13:01
(176) Уважаемый, нам очень не хочется здесь 7-ую главу описания встроенного языка. Не могли бы Вы ее сами перечитать?
179 PR
 
26.02.06
13:01
К (35) в другой ветке, ныне закрытой: результат имхо будет разным, если это два РАЗНЫХ поля!
180 Vozhd
 
26.02.06
13:02
(177) Это для полного соединения с условием. Без указания условия результат будет другим.
181 PR
 
26.02.06
13:03
(177) Во-во, я и говорю :))
А разве это ДВА РАЗНЫХ поля? Я не зря просил уточнить это ;)
182 Vozhd
 
26.02.06
13:03
(179) Расскажите, пожалуйста, как при соединении две колонки поместить в одно поле?
183 PR
 
26.02.06
13:03
Да е мое, приведите же пример наконец :o)
Тупой простой пример
184 LobS
 
26.02.06
13:04
(177) Если это одно поле, то результата при полном и внутреннем соединении будет NULL
185 PR
 
26.02.06
13:04
(182) Очень просто, соединение делается ПО каким-то полям :))
186 Vozhd
 
26.02.06
13:05
(185) Не обязательно
187 PR
 
26.02.06
13:06
(186) Но если это так, то два поля превращаются в одно, логично? :))
188 Vozhd
 
26.02.06
13:06
(187) Нет, не логично.
189 PR
 
26.02.06
13:07
(188) Почему?
190 Vozhd
 
26.02.06
13:07
(188) Повторяю еще раз: внимательно прочитайте 7 главу из описания встроенного языка. Там черным по белому написано почему.
191 PR
 
26.02.06
13:10
Блин, я в (16) и (19) привел два примера запросов, а в (90), (93) + (94) два примера на несколько записей, ОПРОВЕРГНИТЕ меня пожалуйста на похожем примере! :o)
192 SnarkHunter
 
26.02.06
13:11
(180)Согласен. В другом случае результат будет:

1 4
1 5
1 6
2 4
2 5
2 6
3 4
3 5
3 6
193 PR
 
26.02.06
13:14
Елки-палки, может кто-нить (93)+(94) опровергнуть? Все сразу станет на свои места :))
194 Vozhd
 
26.02.06
13:14
(191) Примеры выбраны не показательными, это раз. Вы напрочь отказываетесь читать документацию, это два. И в третьих, что Вам мешает выполнить в консоли два простых запроса?:
Запрос1

Выбрать * из Таблица1
Объединить ВСЕ
Выбрать * из Таблица2

и Запрос2

Выбрать * из Таблица1 Соединение Таблица2
195 Vozhd
 
26.02.06
13:16
(193) А самое печальное, что во встроенной помощи 1С:Предприятия богатое количество примеров результатов соединений и объединений. Но нет, не хотят люди даже F1 нажать...
196 PR
 
26.02.06
13:17
(194) Примеры предложил Стас ;) Согласен на другие реальные (а не 1, 2, 3...) примеры :))
Доку я читал и все это в общем случае понимаю, не могу придумать показательный пример, когда результат будет различным :o)
Два запроса мешает выполнить большое количество данных, среди которых может и не быть того, что нужно :o) Хочется пример на несколько записей
197 Vozhd
 
26.02.06
13:18
(196) Возьмите любой пример с количеством записей отличным от нуля и от двух.
198 PR
 
26.02.06
13:19
(194) А если в первом запросе использовать не Объединить ВСЕ, а просто Объединить?
(195) Я читаю доку и побольше многих, даже написать сам попробовал :))
Просто сейчас хочется ПРОСТОЙ пример
199 Vozhd
 
26.02.06
13:23
(198) Штатной документации, на мой взгляд, очень наглядные и показательные примеры с объяснениями. Так же в документации достаточно четко прописана разница между "Объединить" и "Объединить ВСЕ".
200 PR
 
26.02.06
13:23
(197) OK :))

Записи регистра Цены
1. Тапочки      ПродажнаяЦена    100
2. Вентилятор   ЗакупочнаяЦена   200
5. Светильник   ЗакупочнаяЦена   300

Записи регистра СкидкиПоНоменклатуре
1. Тапочки      РозничнаяСкидка  10%
2. Вентилятор   ОптоваяСкидка    20%
3. Подушка      ОптоваяСкидка    30%
4. Стол         РозничнаяСкидка  10%

Соединение по номенклатуре: 5 записей, верно?
Объединение без все: 5 записей, верно?
201 PR
 
26.02.06
13:24
(199) Я (надеюсь) понимаю разницу между "Объединить" и "Объединить ВСЕ" :o)
Это когда две записи либо пытаются либо нет соединиться в одну, верно?
202 France
 
26.02.06
13:25
(200) ващет, при безусловном объединении (union) будет 9 записей..
203 Vozhd
 
26.02.06
13:26
(200) Да, нет.
204 PR
 
26.02.06
13:26
(202) А я разве не написал, что объединение без ВСЕ? :))
205 PR
 
26.02.06
13:27
(203) Почему нет, если соединение без ВСЕ?
206 rsv
 
26.02.06
13:27
По этому случаю прикупил книжецу далекую именно от 1С но близкую к T-SQL.Где для чайников разбираются подробно все типы соединений и объединений. Так доходчиво написано.На примерах. Часто ей пользуюсь.
207 Vozhd
 
26.02.06
13:28
(205) Глава 7, Описание встроенного языка.
208 rsv
 
26.02.06
13:32
Да . Если шо то PUBS рулит. Благо дело хоть пересчитать руками мона. Строк мало.Что помножилось , а что не успело или задвоилось
209 PR
 
26.02.06
13:36
(207) Книги куда-то заиграл, есть только электронный вариант :o)
Глава 34? Подзаголовок какой?
210 France
 
26.02.06
13:36
+ (207) стр 1075
211 PR
 
26.02.06
13:37
(+209) А, сорри, ты же написал, что 7 :o)
А я что-то про 7.7 подумал :o)
Сейчас посмотрю, по 8.0 книги е
212 Vozhd
 
26.02.06
13:37
(209) Справка - Поиск по справке - "Объединение запросов"
213 PR
 
26.02.06
13:40
Млин, читаю:
"По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные разными запросами, заменяются одной."
А разве NULL не складывается с любым другим значением?
214 Vozhd
 
26.02.06
13:41
(213) А при чем здесь NULL и сложение? И почему именно сложение, а не вычитание или умножение?
215 PR
 
26.02.06
13:41
Итого в примере из (200) объединятся записи (1) и (1) в одну и записи (2) и (2) в одну, логично?
216 PR
 
26.02.06
13:42
(214) Я имею в виду "сложение" записей в одну, то есть замену двух записей одной
217 Vozhd
 
26.02.06
13:44
(215) Нет, не логично. Еще раз перечитайте (213). Желательно громко, вслух, на распев.
218 France
 
26.02.06
13:45
(215) в 200 будет 9 записей.
219 Vozhd
 
26.02.06
13:46
(218) Это как так 9?
220 PR
 
26.02.06
13:48
(218) Спасибо, мне уже доложили :)) (с)

(217) Где я не прав?

Первые записи регистров

Товар      ВидЦены          ВидСкидки          Цена    ПроцентСкидки

Тапочки    ПродажнаяЦена    NULL               100     NULL
Тапочки    NULL             РозничнаяСкидка    NULL    10%

Итого записи объединяются
221 France
 
26.02.06
13:49
"По умолчанию при объединении запросов польностью одинаковые строки в результате запроса, сформированные разными запросами, заменяются одной. Если тербуется, чтобы были оставлены разные строки, необходимо указать ключевое сллово ВСЕ." ЖКК, стр 1075
222 PR
 
26.02.06
13:50
(221) Я это прочитал и уже давно сказал, что в моем случае ВСЕ НЕ используется :))
223 France
 
26.02.06
13:50
(220) что это?...
224 France
 
26.02.06
13:50
(222) а где у тебя в (200) полностью одинаковые записи?
225 Vozhd
 
26.02.06
13:51
(220) Никогда не думал, что придется в интернет конференции учить читать.
"По умолчанию при объединении запросов ПОЛНОСТЬЮ ОДИНАКОВЫЕ строки в результате запроса, сформированные разными запросами".
Покажите, пожалуйста, где в (220) ПОЛНОСТЬЮ ОДИНАКОВЫЕ строки?
226 PR
 
26.02.06
13:52
Мда, я сам профессионал по зае****нию, но мне далеко до вас :D
227 Vozhd
 
26.02.06
13:53
(226) Научитесь читать, в жизни это умение очень помогает...
228 PR
 
26.02.06
13:53
(224) Смотри 220, в чем первые записи различаются?
229 France
 
26.02.06
13:53
(226) ты не профессионал, ты любитель, потому как никому ничего не сумел заи...ть... разве что себе..
230 France
 
26.02.06
13:54
NULL и РозничнаяЦена одно и то же?...я в шоке (с)
231 PR
 
26.02.06
13:54
(225) Так вот я же и спрашиваю, к примеру ПродажнаяЦена и NULL считаются различными значениями?
232 SnarkHunter
 
26.02.06
13:55
Товарищ налетел лбом на NULL... Для новичков простительно...
233 Vozhd
 
26.02.06
13:55
(231) Напишите запрос, который вернет результат операции сравнения этих двух значений.
234 rsv
 
26.02.06
13:56
null<>0
235 Vozhd
 
26.02.06
13:56
(232) Товарищ отказывается читать документацию - это никому не простительно.
236 France
 
26.02.06
13:56
(232) позвольте еще раз высказать Вам благодарность за неописуемо бесподобную фразу "я в шоке".
237 PR
 
26.02.06
13:57
(229) :D
(232) Я в шоке, сечас меня в 1С:Ламеры запишут :D
(235) Я ПРОЧИТАЛ доку :o)
(234) А 100 = NULL?
(233) Сейчас сбацаю
238 France
 
26.02.06
14:00
думаю, надо записывать в SQL-ламеры))
239 PR
 
26.02.06
14:05
(233)
Примерно так, только ВидСкидки заменил на ХарактеристикаНоменклатуры, нет поля ВидСкидки в типовой УТ :o)

ВЫБРАТЬ
   ЦеныНоменклатуры.Номенклатура,
   ЦеныНоменклатуры.ТипЦен,
   NULL КАК ХарактеристикаНоменклатуры,
   ЦеныНоменклатуры.Цена,
   NULL КАК ПроцентСкидкиНаценки
ИЗ
   РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   СкидкиНаценкиНоменклатуры.Номенклатура,
   NULL,
   СкидкиНаценкиНоменклатуры.ХарактеристикаНоменклатуры,
   NULL,
   СкидкиНаценкиНоменклатуры.ПроцентСкидкиНаценки
ИЗ
   РегистрСведений.СкидкиНаценкиНоменклатуры КАК СкидкиНаценкиНоменклатуры
240 PR
 
26.02.06
14:06
(238) Записывайте, мне похрену, я в специалисты по сиквелу не записывался :))
Только свою точку зрения сначала докажите ;)
241 Vozhd
 
26.02.06
14:06
(239) И? :-)
242 France
 
26.02.06
14:08
(240) кстати, буду утверждать, что аббревиатуру SQL неправильно читаете...))
243 PR
 
26.02.06
14:11
Уморили :o)
(242) Это не я придумал такое произношение :o)
(241) Сейчас проверить некогда уже, пора бежать, через энное время проверю, будет 5 записей, 9 или сколько еще :o)
Следующий вопрос, а если использовать СГРУППИРОВАТЬ или ИТОГИ, то есть не обращать внимание на детальные записи, результат будет разным или нет?

Все, побег по делам, до скорых встреч
244 Vozhd
 
26.02.06
14:12
(243) Кажется, что вопрос следует задать более развернуто, а то ничего не понятно.
245 PR
 
26.02.06
14:17
(244) Имеется в виду, что если в запросе с ОБЪЕДИНИТЬ сгруппировать все с помощью СГРУППИРОВАТЬ, то есть избавиться от детальных записей или при выборке результат использовать группировки, описанные в ИТОГИ, то будет ли результат отличаться от варианта, когда исполльзуется СОЕДИНЕНИЕ с таким же группированием записей или использование итогов?
246 France
 
26.02.06
14:20
(243) слюши, дарагой, дафой учет мух и катлет вести раздельно да))) и сиквел не придумывали - так назывался язык?  предществующий SQL
247 Vozhd
 
26.02.06
14:21
(245) Результаты объединения и соединения в общем случае не совпадают. Сгруппировать тут никак не поможет. А итоги - это вообще операция с результатом запроса, которая выполняется на клиенте и фактически не относится к языку запросов.
248 PR
 
26.02.06
14:22
(246) Дарагой, сиквел - это всего лишь транскрипция SQL, да!
Могу ошибаться, но где-то читал :o)
В общем я убег, приду, продолжим :o)
249 France
 
26.02.06
14:24
(248) ты не можеш ошибатся - ты ошибаешся относительно сиквел..
250 France
 
26.02.06
14:25
(247) когда могут совпадать результаты объединения и соединения?..
251 Vozhd
 
26.02.06
14:28
(250) При определенных структурах таблиц, при определенных данных в этих таблицах и при особых условиях соединения.
252 France
 
26.02.06
14:38
с точки зрения операций над множествами можеш описать разницу Join и Union?
253 Vozhd
 
26.02.06
14:40
(252) Это мне?
254 France
 
26.02.06
14:41
(253) ага.. для общего развития...
255 France
 
26.02.06
14:58
(248)История возникновения языка SQL восходит к 1970 году [8], когда
доктор Е.Ф. Кодд предложил реляционную модель в качестве новой
модели базы данных. Для доказательства жизнеспособности новой
модели данных внутри компании IBM был создан мощный исследова-
тельский проект, получивший название System/R. Проект включал
разработку собственно реляционной СУБД и специального языка за-
просов к базе данных. Так в начале 70-х годов появился первый иссле-
довательский прототип реляционной СУБД. Для этого прототипа раз-
рабатывались и опробовались разные языки запросов, один из которых
получил название SEQUEL (Structured English Query Language). С мо-
мента создания и до наших дней этот язык претерпел массу измене-
ний, но идеология и произношение названия остались неизменными
(аббревиатура SQL иногда читается «Эс-Кю-Эль», а иногда «Сиквел»)
256 Vozhd
 
26.02.06
15:00
(252) Union(A,B) = A U B
Join(A,B) = A x B
257 rsv
 
26.02.06
15:13
Ребятушки. А вы представьте когда не SQL сервер своей работой занимается, а на клиенте ,на таблицах значений реализованы по сути union и join. Путем многократных циклов и группировок . Сначала одну табличку набиваем потом другую. Открываем цикл .Перебираем и .т.д. Вот это пипец. Имеем 5 таблиц значений для получения одной итоговой. :) А кода то сколько , а кода :)
258 Vozhd
 
26.02.06
15:30
(257) Объем кода сильно зависит от того, какой алгоритм использовать :-)
259 Белый Чебурашка
 
26.02.06
16:07
Так всё-таки 9 записей будет? Полное Соединение сваяет все возможные комбинации?
260 Vozhd
 
26.02.06
16:10
(259) Если речь идет о полном соединении без условий, то записей будет 19...
261 PR
 
26.02.06
18:31
Почти два часа меня не было, а по делу ничего.
Ладно, буду сам копать, раз Волшебник гордо молчит, а остальные не могут/не хотят объяснить по рабоче-крестьянски :o)
262 France
 
26.02.06
18:44
(261) а что тебе еще по делу?.
263 France
 
26.02.06
18:47
при объединении строки первого запроса просто (втупую) дополняются строками из второго запроса.
при соединении, дополняются не строки (не столько строки), а столбцы...

дополнение столбцов - ключевое отличие соединения от объединения.
264 PR
 
26.02.06
19:19
В общем-то опытно-экспериментальным путем я все выяснил, что хотел :o)
Остался только один вопрос, но с этим я как-нить разберусь, что такое NULL и зачем он нужен, раз ни с чем ни складывается?

Всем спасибо, все свободны :))

(263) Я ниче не понял из того, что ты сказал :o)
265 France
 
26.02.06
19:21
(264) ты потрудись, и обязательно дойдеш до понимания.
Кстати, для этого предлагаю поизучать объединения и соединения используя, допустим, тот же самый MS SQL
266 PR
 
26.02.06
19:34
(265) Как-нить в другой раз, не до этого :o)
267 France
 
26.02.06
19:36
и еще, попробуй объединить два запроса с разным количество полей в предложении ВЫБРАТЬ))..
тоже самое с СОЕДИНЕНИЕ взлетит на ура))
268 PR
 
26.02.06
19:40
(267) Ну конечно, а как быть в случае, если какое-то поле должно браться из обоих запросов и по нему соединение?
Возьмешь из одного, в записях из другого будет NULL и наоборот.
Соединение рулит? ;)
269 PR
 
26.02.06
19:42
(+268) Я, впрочем, знаю, как это обойти, но решение мне не больно нравится :o)
270 France
 
26.02.06
19:42
ничо в 268 не понял..
271 PR
 
26.02.06
19:43
(270) Читай (265) :))
272 France
 
26.02.06
19:45
(271) у меня вопроса как (0) не возникало, так сслыка на 265 абсолютна некорректа и с твое стороны выглядить как мелкая месть..
273 PR
 
26.02.06
19:49
Я в (263) тоже не понял, почему это в одном случае добавляются строки, а в другом столбцы :o)
Прямо что-то типа "Летят по небу два крокодила, один красный, а другой низко. Сколько мне лет?" :o)
На свой вопрос я уже нашел ответ, ибо (261) :o)
По поводу мести ты не прав, мне просто лень объяснять :))
274 SnarkHunter
 
26.02.06
19:54
Hominis est errare, insipientis perseverare...
275 PR
 
26.02.06
19:56
(274) Помедленнее, я записываю :))