@cicatrix
было бы большой ошибкой думать

SQL два join в одной и той же таблице?

Здравствуйте, есть таблица items:
item_id uniqueidentifier not null constraint pk_items primary key,
firstDocument uniqueidentifier not null,
lastDocument uniqueidentifier not null


Есть таблица documents
docid uniqueidentifier not null constraint pk_docs primary key,
op_type int not null


Надо вернуть коды операций для первого и последнего документов.
Кроме как использовать join дважды, получается выхода нет. Я правильно понимаю, что это реально будет в 2 раза медленнее происходить?

select 
    i.item_id, 
    i.firstDocument, 
    fd.op_type, 
    i.lastDocument,
    ld.op_type
from 
    items i
left join documents fd on fd.docid = i.firstDocument
left join documents ld on ld.docid = i.lastDocument
  • Вопрос задан
  • 2852 просмотра
Решения вопроса 1
tsklab
@tsklab Куратор тега SQL Server
Здесь отвечаю на вопросы.
SELECT items.item_id AS Item, FirstDoc.op_type AS FirstDocOper, LastDoc.op_type AS LastDocOper
  FROM items 
    INNER JOIN documents AS FirstDoc ON items.firstDocument = FirstDoc.docid 
    INNER JOIN documents AS LastDoc ON items.lastDocument = LastDoc.docid
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
Я правильно понимаю, что это реально будет в 2 раза медленнее происходить?

Естественно.
Но по docid у вас индекс, так что должно быть достаточно быстро.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы