2016-10-26 2 views
0

Я получаю сообщение об ошибке «Не уникальная таблица/псевдоним« Клиент », когда я запускаю свой оператор соединения. Я хочу отобразить всю информацию, которая у меня есть. Я исследовал инструкции JOIN, и я не могу найти, что не так.Не уникальная таблица/псевдоним - SQL

SELECT Customer.CustomerID, Customer.FirstName, Customer.LastName,  Customer.StreetAddress,Customer.City,Customer.State,Customer.Zipcode, Customer.HomePhone,Customer.MobilePhone,Customer.OtherPhone, Pizza.PizzaID, 
Pizza.PizzaName, Pizza.Description, Pizza.UnitPrice, OrderInformation.OrderID, OrderInformation.OrderDate, OrderItem.Quantity 


FROM Customer 

JOIN OrderInformation ON OrderInformation.OrderID = OrderItem.OrderID 
JOIN Pizza ON Pizza.PizzaID = OrderItem.PizzaID 
JOIN Customer ON Customer.CustomerID = OrderInformation.CustomerID; 

ответ

0
SELECT 
... 
FROM Customer 
... 
JOIN Customer 

Вы выбираете FROM Customer, а затем делать JOIN Customer, то есть теперь у вас есть два экземпляра Customer. Когда вы ссылаетесь на что-то вроде Customer.CustomerID, ваш запрос не знает, какую итерацию таблицы Customer вы имеете в виду.

Если вам действительно нужны две ссылки на одну и ту же таблицу, вы можете дать один псевдоним. Тем не менее, если вы ссылаетесь на таблицу OrderItem, но никогда не JOIN или выберите FROM, у меня есть догадка, что одна из этих таблиц Customer должна быть OrderItem. Возможно, так ...

SELECT ... 

FROM OrderItem 

JOIN OrderInformation ON OrderInformation.OrderID = OrderItem.OrderID 
JOIN Pizza ON Pizza.PizzaID = OrderItem.PizzaID 
JOIN Customer ON Customer.CustomerID = OrderInformation.CustomerID; 
+0

Спасибо за информацию, это работает! – Nippon87

0

Я бы настоятельно рекомендовал использовать псевдонимы таблиц. Казалось бы, что первая ссылка на Customer должно быть действительно OrderItem:

SELECT c.CustomerID, c.FirstName, c.LastName,  
     c.StreetAddress, c.City, c.State, c.Zipcode, 
     c.HomePhone, c.MobilePhone, c.OtherPhone, 
     p.PizzaID, p.PizzaName, p.Description, p.UnitPrice, 
     oinf.OrderID, oinf.OrderDate, oi.Quantity 
FROM OrderItem oi JOIN 
    OrderInformation oinf 
    ON oinf.OrderID = oi.OrderID JOIN 
    Pizza p 
    ON p.PizzaID = oi.PizzaID JOIN 
    Customer c 
    ON c.CustomerID = oi.CustomerID;