Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите составить запрос  [new]
Smekalisty
Member

Откуда: Moldova
Сообщений: 40
Добрый вечер
У меня есть такой запрос

SELECT
a.Id
,b.Name
,b.Price1
,b.Price2
FROM
MainTable a
INNER JOIN Payments b ON a.Id = b.Id

мне его нужно модифицировать, а имеено считать Price2 по другому условию
я сделал так

SELECT
a.Id
,b.Name
,b.Price1
,с.Price2
FROM
MyTable a
INNER JOIN Payments b ON a.Id = b.Id
INNER JOIN Payments с ON a.ImportantValues = c.ImportantValues AND c.IsVisible = 1

все работает, но мне кажется как-то непрвильно и некрасиво иметь 2 inner join на одну и ту же таблицу
как составить правильно?

Если где-то закралась помарка, извиняйте, пишу от руки
Спасибо заочно
5 сен 12, 23:42    [13121202]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
lbppb
Member

Откуда:
Сообщений: 1049
По мне так все и так отлично. Если речь не идет об объединении миллиардных таблиц, где что-нибудь не так с кластерными столбцами и т.п.
6 сен 12, 01:48    [13121376]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
Smekalisty
все работает, но мне кажется как-то непрвильно и некрасиво иметь 2 inner join на одну и ту же таблицу

У так они же связаны по разным полям ?
Если бы у вас было 2 таблицы Payments - одна с полем Id, а вторая с полем ImportantValues - то вам тоже бы не понравилось два join-а ?
6 сен 12, 09:18    [13121646]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Smekalisty
Member

Откуда: Moldova
Сообщений: 40
Спасибо, вы меня убедили
Оставляю как есть
6 сен 12, 10:33    [13122074]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
Smekalisty
Спасибо, вы меня убедили
Оставляю как есть

Другой вопрос - почему у вас Payments такую структуру. Т.е. ссылка на родительскую таблицу по двум разным полям.
6 сен 12, 10:36    [13122105]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Smekalisty
Member

Откуда: Moldova
Сообщений: 40
Эм, не понял вопрос.
Почему сорержит такую структуру?

Меня что смутило в моем втором варианте, т.к. неселен в sql
Меня смутил синтаксис, я хотел сделать как-то так:

SELECT
    a.Id
    ,b.Name
    ,b.Price1
    ,с.Price2
FROM
    MyTable a
        INNER JOIN Payments b, c
              ON a.Id = b.Id
              ON a.ImportantValues = c.ImportantValues AND c.IsVisible = 1


но такого синтаксиса нет, я и запаниковал, что составил его избыточно
6 сен 12, 12:16    [13122978]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
Smekalisty
Эм, не понял вопрос.
Почему сорержит такую структуру?

Да. Почему таблица Payments нарушает нормальную форму - на родительскую таблицу MyTable ссылаются 2 независмых поля Payments ?
6 сен 12, 12:36    [13123125]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить