Я пытаюсь ознакомиться с нормализацией, и у меня возникла проблема в том, что я пытаюсь объединить три таблицы вместе, чтобы создать один массивный SELECT, который предоставит всю информацию о людях в таблице TCustomers, m unsure, как это сделать. Вот моя структура таблицы:Как получить данные из таблицы SQL на основе идентификатора?
CREATE TABLE TCustomers (
CustomerID INT IDENTITY(1,1) NOT NULL
,FirstName VARCHAR(50) NOT NULL
,LastName VARCHAR(50) NOT NULL
,City VARCHAR(50) NOT NULL
,[State] VARCHAR(50) NOT NULL
,ZipCode VARCHAR(50) NOT NULL
,EmailAddress VARCHAR(50) NOT NULL
,CONSTRAINT pkCustomers PRIMARY KEY (CustomerID)
);
CREATE TABLE TLocations (
LocationID INT NOT NULL
,LocationName VARCHAR(50) NOT NULL
,CONSTRAINT pkLocations PRIMARY KEY (LocationID)
);
CREATE TABLE TBenefitLevels (
BenefitLevelID INT NOT NULL
,BenefitLevelName VARCHAR(50) NOT NULL
,CONSTRAINT pkBenefitLevels PRIMARY KEY (BenefitLevelID)
);
CREATE TABLE TCustomerLocationBenefits (
CustomerID INT NOT NULL
,LocationID INT NOT NULL
,BenefitLevelID INT NOT NULL
,CONSTRAINT pkCustomerLocationBenefits PRIMARY KEY (CustomerID, LocationID)
);
CREATE TABLE TCustomerStatus (
CustomerID INT NOT NULL
,FirstOrderDate DATE NOT NULL
,NewestOrderDate DATE NOT NULL
,CONSTRAINT pkCustomerStatus PRIMARY KEY (CustomerID)
);
И я пытаюсь создать ЗЕЬЕСТ, который даст мне FirstName, LastName, город, [государство], ZipCode и EmailAddress из TCustomers, то BenefitLevelName, основанный на BenefitLevelID для каждого Клиента из TBenefitLevels, LocationName BASED на LocationID для каждого Клиента из TLocations. Я знаю, что это возможно, но я совершенно забыл, как это сделать, вот мой текущий ЗЕЬЕСТ, который получает идентификаторы необходимо, но не имена:
SELECT TC.FirstName, TC.LastName, TC.City, TC.[State], TC.ZipCode, TC.EmailAddress, TL.LocationName, TBL.BenefitLevelName, TCS.FirstOrderDate, TCS.NewestOrderDate
FROM TCustomers AS TC
,TLocations AS TL
,TBenefitLevels AS TBL
INNER JOIN TCustomerStatus AS TCS ON TC.CustomerID = TCS.CustomerID
INNER JOIN TCustomerLocationBenefits AS TCLB ON TC.CustomerID = TCLB.CustomerID
В настоящее время я получаю ошибку, что « многозначный идентификатор «TC.CustomerID» не может быть связан. Если я удалю TLocations и TBenefitLevels и заменим TL.LocationName и TBL.BenefitLevelName с их соответствующими идентификаторами в TCLB, он работает, но не так, как я этого хочу.
Пожалуйста, помогите!
Это именно то, что мне нужно! Мне всегда казалось, что я должен начать с таблицы, в которой больше всего данных, но логика имеет смысл. Большое спасибо за помощь! – user3530169