Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Аналог Oracle в MS SQL Server -е  (Прочитано 18513 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kharhan
Участник

ru
Offline Offline
Пол: Мужской

« : 28-09-2010 11:46 » 

привет
Как будет аналог
Tablename1.ID(+)=Tablename2.ID(+)   
в SQL Server 2000-е (или в SQL Server 2008 -е) 
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 28-09-2010 12:01 » 

kharhan, мне даже незнаком такой синтаксис, хоть я и не эксперт.. Что значит такое выражение?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 28-09-2010 12:04 » 

left join
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 28-09-2010 12:21 » 

http://asktom.oracle.com/pls/asktom/f?p=100:11:702137466838170::::P11_QUESTION_ID:6585774577187
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #4 : 28-09-2010 17:10 » 

привет
Как будет аналог
Tablename1.ID(+)=Tablename2.ID(+)   
в SQL Server 2000-е (или в SQL Server 2008 -е) 

Ты с join'ми не перемудрил? Тебе какой нужен?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 28-09-2010 17:19 » 

McZim, будем считать, что ТС спрашивал о (+) слева и справа
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #6 : 28-09-2010 19:33 » 

Sla, а какой смысл?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 28-09-2010 19:34 » 

смысла никакого, и ТС пропал. Жаль
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dusk
Команда клуба

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« Ответ #8 : 22-11-2010 07:52 » 

Может кому-нибудь пригодится.

В Oracle можно соединять таблицы с помощью JOIN (называю классической связкой - работает на всех известных мне СУБД) и в блоке WHERE (встречал в еще какой-то СУБД. в какой точно не помню).

В классической связке есть 4 типа связки:
INNER JOIN - выбирает только те записи, которые встречаются в обоих таблицах
LEFT OUTER JOIN - выбирает все записи с главной таблицы (к которой присоединяется доп. таблица), и те записи с присоединяемой таблицы, которые встречаются в главной.
RIGHT OUTER  JOIN - выбираются все записи с присоединяемой таблицы, и те записи главной таблицы, которые встречаются в присоединяемой
FULL OUTER  JOIN - выбираются все записи с главной таблицы. и все записи с присоединяемой заблицы

Теперь аналогии записей:
INNER JOIN -> table1.p=table2.r
LEFT OUTER  JOIN -> table1.p=table2.r(+)
RIGHT OUTER  JOIN -> table1.p(+)=table2.r
FULL OUTER  JOIN -> table1.p(+)=table2.r(+)

Слово OUTER является необязательным, поэтому его можно не писать т.е. LEFT OUTER  JOIN равносильно LEFT JOIN

Удачи в работе Улыбаюсь
« Последнее редактирование: 22-11-2010 13:26 от Dusk » Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #9 : 22-11-2010 08:32 » 

LEFT OUTER  JOIN -> table1.p(+)=table2.r
RIGHT OUTER  JOIN -> table1.p=table2.r(+)

ты LEFT и RIGHT не перепутал?
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dusk
Команда клуба

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« Ответ #10 : 22-11-2010 09:06 » 

McZim, нет.

(+) указывает из какой таблицы нужно выбрать все данные.
т.е.
table1 LEFT JOIN table2 ON table1.p=table2.r => table1.p(+)=table2.r


Есть еще CROSS JOIN - выбирает все возможные варианты связи таблиц.
« Последнее редактирование: 22-11-2010 09:10 от Dusk » Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
McZim
Модератор

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #11 : 22-11-2010 09:20 » 

McZim, нет.

(+) указывает из какой таблицы нужно выбрать все данные.

Учи мат часть!

SQL> drop table table1;

Таблица удалена.

SQL> drop table table2;

Таблица удалена.

SQL> create table table1(p number);

Таблица создана.

SQL> insert into table1 values(1);

1 строка создана.

SQL> insert into table1 values(2);

1 строка создана.

SQL> create table table2(r number);

Таблица создана.

SQL> insert into table2 values(1);

1 строка создана.

SQL> insert into table2 values(2);

1 строка создана.

SQL> insert into table2 values(3);

1 строка создана.

SQL> commit;

Фиксация обновлений завершена.

SQL> select * from table1 LEFT JOIN table2 ON table1.p=table2.r;

    P       R
---------- ----------
    1       1
    2       2

SQL> select * from table1,table2 where table1.p(+)=table2.r;

    P       R
---------- ----------
    1       1
    2       2
          3

SQL>

Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Dusk
Команда клуба

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« Ответ #12 : 22-11-2010 09:48 » 

McZim, согласен прокол вышел Улыбаюсь Исправил неточность.


"В расширении Oracle можно указать (+)  в условии для той таблицы, для которой будут генерироваться пустые записи"

Бывает, но в споре рождается истина Отлично
И вместе с тобой ответили на вопрос Ага
« Последнее редактирование: 22-11-2010 13:27 от Dusk » Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines