![]() |
![]() |
![]() |
|
В чем разница между объединением и полным внешним соединением в запросах? | ☑ | ||
---|---|---|---|---|
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 что-то типа выборки остатков, нечитаемо немного, но самое маленькое, что нашел:
Это типа выборки всех остатков на опр. дату, попробуй разобраться и поймешь, почему мы говорим на разных языках |
|||
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 и Запрос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) Где я не прав? Итого записи объединяются |
|||
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) Помедленнее, я записываю :))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |