Имя: Пароль:
IT
 
Синтаксис SQL
0 ado
 
10.11.09
23:11
Столкнулся сегодня вот с такой конструкцией:


SELECT .........
FROM table1, table2
WHERE table1.field *= table2.field


Вот что такое это "*="? Я, конечно, смутно догадываюсь, что так левое соединение записали, но в документации ни разу такого не встречал.
1 ДенисЧ
 
10.11.09
23:11
это устаревшее и депрекейтед left outer join
2 Sadovnikov
 
10.11.09
23:12
+(1) Да и вот таким:
table1, table2
тоже пользоваться не стоит...
3 Лефмихалыч
 
10.11.09
23:13
(2) это древнеэскуэльский синтаксис, которыым пользовались еще до того, как Кирилл с Мифодием соединения придумали
4 Ненавижу 1С
 
гуру
10.11.09
23:15
я вот предлагаю инновацию:
a~b <=> a=b or (a is null and b is null)
a~=b <=> a=b or a is null
a=~b <=> a=b or b is null
a~=~b <=> a=b or a is null or b is null
5 Ненавижу 1С
 
гуру
10.11.09
23:16
+(4) ничего нового, просто синтаксический сахар
6 Sadovnikov
 
10.11.09
23:16
(3) Кто бы спорил :)
Но согласись, что это не значит, что такми синтаксисом стоит пользоваться, когда космические корабли бороздят...
7 ado
 
10.11.09
23:17
От жеж блин, как я ишшо молод то ...

(2) Да я то всегда явно соединяю, и вообще все стараюсь явно делать, это в чужом коде ковыряться пришлось.
8 Лефмихалыч
 
10.11.09
23:17
(6) ну, ado же вроде сказал, что он чье-то мумиё разгребает, видимо очень окаменелое попалось
9 Лефмихалыч
 
10.11.09
23:19
(4) думаешь, скулю реально нужны эльфийские руны?
10 ado
 
10.11.09
23:20
(8) Да вроде не такой уж и древний код был ...
11 Sadovnikov
 
10.11.09
23:20
(7) Молодца! :)
(8) Либо, пейсатель не совсем вменяемый был... Глянь, например, перлы от1С, которые во встроенной справке по язуку запросов живут. Они там на полном серьезе именно такому связыванию учат...
12 Лефмихалыч
 
10.11.09
23:21
(10) значит пейсатель мануал по SQL читал еще с папируса
13 Ненавижу 1С
 
гуру
10.11.09
23:21
(9) поверь паскалисты совершенно не плачут
когда пишут a=a+b вместо a+=b
этож на любителя
14 ado
 
10.11.09
23:23
(11) Думаю, в 1С динозавров от IT хватает ;-)
15 ado
 
10.11.09
23:24
(13) Паскалисты пишут a:=a+b !
16 ado
 
10.11.09
23:25
+(15) Ибо нефиг одним знаком две разные сущности обозначать ;-)
17 sapphire
 
10.11.09
23:26
(2) С чего бы? простое произведен е таблиц. Зачастую полезно.
Например в 1С: Все склады+ все товары.
18 Лефмихалыч
 
10.11.09
23:27
(17) ... равно недостаточно памяти для завершения операции :)
19 Sadovnikov
 
10.11.09
23:27
(17) Сунешься потом в такой код и потопаешь за водкой, мылом и веревкой. И приэтом будешь бурчать что-то типа "Машу вать!!!"...
Код абсолютно нечитабльным получается.
20 Ненавижу 1С
 
гуру
10.11.09
23:29
(15) точно! у тех правда тоже 2 сущности, но несколько по другому природа
21 Ненавижу 1С
 
гуру
10.11.09
23:30
(17) я не понял что ты написал, честно
22 Лефмихалыч
 
10.11.09
23:31
(21) он написал, что = и := - это суть два разных оператора и так и должно быть в расово верных языках программирования
23 Sadovnikov
 
10.11.09
23:32
(22) Паскалисты бьют сишников? :)
24 Ненавижу 1С
 
гуру
10.11.09
23:35
(22) ты знаешь в других суть 2 разных это = и ==
25 ado
 
10.11.09
23:37
(24) Но есть расово неверные языки, где = и = записываются одинаково. Один из них мы все знаем ;-)

(17) Если честно, не представляю, где на практике нужно полное декартово произведение таблиц.
26 Ненавижу 1С
 
гуру
10.11.09
23:41
(25) найти все заказ и реализации по ним, сопоставить их, при этом вывести также и те и другие, которым нет сопостовления, как то так
27 Лефмихалыч
 
10.11.09
23:42
(24) я ни где не сказал, что паскаль - единственно верный язык
28 Ненавижу 1С
 
гуру
10.11.09
23:43
(27З) меня синтаксис смутил
29 Лефмихалыч
 
10.11.09
23:44
+(27) более того, я его люто недолюбливаю
ЗЫ На религиозной почве без особенных причин
30 ado
 
10.11.09
23:44
(26) Полное внешнее соединение. Это немножко другое.
31 sapphire
 
10.11.09
23:46
(21) А что непонятного?
(25) Мне нужно. Например есть товар, который должен быть на каждом складе.
Условие для товра известно. Как получить таблицу товар-склад?
Она же будет фильтром для всего остального.
32 Ненавижу 1С
 
гуру
10.11.09
23:47
(30) извини, согласен
ну тогда там же, вывести только те, которые имеют пары заказ-реализация
33 Ненавижу 1С
 
гуру
10.11.09
23:48
+(32) блин, это внутреннее, а не декартово
34 Sadovnikov
 
10.11.09
23:49
Чего спорите? Вначале речь ршла всего-навсего о представлении кода и удобстве последующего его чтения...
35 Лефмихалыч
 
10.11.09
23:50
(34) истину рожают...
36 Sadovnikov
 
10.11.09
23:50
(35) А... Тады не мешаю...
37 Ненавижу 1С
 
гуру
10.11.09
23:51
+(33) любое соединение с таблицей констант
38 sapphire
 
10.11.09
23:51
(33)(34)(35) Конструкцию из Oracle первых трех записей в студию.....
39 Ненавижу 1С
 
гуру
10.11.09
23:52
(38) ты как на Лубянке, что такого я сказал в (33)?
40 sapphire
 
10.11.09
23:53
Сегодня возник спор - как избежать грязного чтения в SQL 2008 БД 1с77?
Какой хинт использовать и режим сеанса.
41 Sadovnikov
 
10.11.09
23:53
(40) Зачем ты собрался избегать грязногочтения в семерке?
42 sapphire
 
10.11.09
23:54
Например, _1SJOURN сдуру повешен триггер на INSERT/UPDATE/DELETE
43 sapphire
 
10.11.09
23:54
(41) Для импорта документов
44 Sadovnikov
 
10.11.09
23:54
(42) И почему это сдуру? У нас, например, висят эти триггера. И как это связано с (40)?
45 sapphire
 
10.11.09
23:56
(44) А если транзакция оптимистическая?
46 Sadovnikov
 
10.11.09
23:56
(43) Что-то тебя кидает из строну в сторону... То связывание, то Оракл, то грязное чтение...
47 Sadovnikov
 
10.11.09
23:56
(45) И что?
48 sapphire
 
10.11.09
23:58
(46) У Oracle совершенно иная конструкция и концепция получения первых записей.
Можешь возразить? Нет в Pl/SQL предиката TOP.
49 sapphire
 
10.11.09
23:59
(47) Ну а если потом пойдет откат транзакции?
50 Sadovnikov
 
10.11.09
23:59
(48) Вот про Оракл я вообще ничего не могу возразить - не знаю я его абсолютно. Можешь грузить меня чем хочешь - поверю :)
51 Sadovnikov
 
11.11.09
00:00
(49) Давай ты как-то поподробнее проблему опишешь? А то у меня такое чуство, что обсуждаем сферического коня...
52 Лефмихалыч
 
11.11.09
00:00
(38) Select * from table where rownum <= 3;
53 sapphire
 
11.11.09
00:00
(50) Да нет, грузить я тебя вовсе не собираюсь.
Просто по subj, ведь полно сиквельных диалектов....
54 sapphire
 
11.11.09
00:01
(52) Молодец
55 Sadovnikov
 
11.11.09
00:01
(53) Понял :) Еще один буквоед. Прямо как я :)
56 sapphire
 
11.11.09
00:05
(51) В двух словах - всё банально - дабы не поднимать _1SUPDTS решили создать свою таблицу и писать в неё изменения, тогда, пока триггер отрабатывает запись с IDDOC существует, другая БД в этот момент читает _1SJOURN и видит грязные данные, тянет их к себе. В базе-источники потом идет откат  транзакции, и IDDOC освобождется, что приводит к искажению инфы. Да, криво. Да, решаемо и решено.
57 sapphire
 
11.11.09
00:07
(55) Просто многие привыкли, что хинтом (NOLOCK) можно ограничить себя, егда далеко не всегда.
58 Sadovnikov
 
11.11.09
00:10
(56) Дык не проблема же? Блокировка на строку на момент считывания данных. И всё. А, не всё. Еще повторная поставка в обмен для очситки базы-приемника.
59 sapphire
 
11.11.09
00:13
(58) А ты проверь.
60 sapphire
 
11.11.09
00:14
(58) Да проблем нет. Всё решаемо. Вопрос как?
Тут же всего человек 20 скуль знают. Остальные - статисты.
61 sapphire
 
11.11.09
00:16
Допусти, ну напишем статю как этого избежать. Ребят, и вправду, много писали из рассчета, что это кто-то оценит. Оценили? Нет. Думаешь у Сережи Осипова не было хороших идей? Были. Во что превратилось всё?
62 Sadovnikov
 
11.11.09
00:17
(59) Чего именно проверить? Несколько лет работает.
(61) Вот не надо про этого...
63 Лефмихалыч
 
11.11.09
00:17
истина имеет сучковатую природу - туго идет...
64 sapphire
 
11.11.09
00:22
(62) Умный -  поймет, дурак - не оценит.
"Работает - и не трогай" (с)
65 sapphire
 
11.11.09
00:22
(63) Но резво входит
66 los_hooliganos
 
11.11.09
04:26
(25) "Если честно, не представляю, где на практике нужно полное декартово произведение таблиц."

для хитровы***анных расчетов интервалов например.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.