Я пытаюсь найти самый чистый способ выполнить некоторые поиски. У меня есть таблица с индексами, заполненная здесь сотрудниками, а затем большая таблица билетов, в которой используются свои сотрудники EmployeeID в нескольких местах - кто сделал билет, который последний раз его обновил, и кто его закрыл. Я пытаюсь выяснить самый простой способ вытащить каждое из своих имен в запросе SELECT, не делая каждый раз каждый раз небольшой подзапрос, что я и делаю прямо сейчас.TSQL Самый простой способ выполнить этот крошечный запрос SELECT?
Я сделал это небольшое упражнение для себя, чтобы попытаться упростить вопрос:
CREATE TABLE NameLookup
(
NameIndex INT PRIMARY KEY CLUSTERED IDENTITY(1,1),
Name VARCHAR(10)
);
CREATE UNIQUE NONCLUSTERED INDEX NameIdx ON dbo.NameLookup ([Name])
WITH (IGNORE_DUP_KEY = OFF);
CREATE TABLE BunchaNames
(
PK INT PRIMARY KEY CLUSTERED IDENTITY(1,1),
NameOne INT FOREIGN KEY REFERENCES dbo.NameLookup(NameIndex),
NameTwo INT FOREIGN KEY REFERENCES dbo.NameLookup(NameIndex),
NameThree INT FOREIGN KEY REFERENCES dbo.NameLookup(NameIndex)
);
INSERT INTO NameLookup(Name)
VALUES ('Bill'), ('Phil'), ('Jill'), ('Gil'), ('Fred');
Так что теперь, я хочу выбрать NameOne, NameTwo и NameThree из BunchaNames и отображения имен в NameLookup. Каков самый простой/правильный способ сделать это? Это так? Большое спасибо за любую помощь!
SELECT (SELECT Name FROM NameLookup WHERE NameIndex = bn.NameOne) AS NameOne,
(SELECT Name FROM NameLookup WHERE NameIndex = bn.NameTwo) AS NameTwo,
(SELECT Name FROM NameLookup WHERE NameIndex = bn.NameThree) AS NameThree
FROM BunchaNames bn
Поскольку не существует никакого отношения б/ш 'namelookup' и' bunchanames' ... ваш запрос выглядит правильно для меня. – Rahul