2014-08-31 2 views
1
USE PayCalculator; 
CREATE VIEW PayCalculator.Pay 
AS 
    SELECT 
     PayStructure.WeekIncluded AS PaidWeeks, 
     PayStructure.PayDate AS PayDate, 
     dbo.PayStructure.PayYear AS PayYear, 
     Months.PMonth 
    FROM 
     PayStructure,Months 
    INNER JOIN 
     Months.PMonth ON PayStructure.MonthID = PayCalculator.dbo.Months.PMonths 

Кажется, что вид с объединением не создавался. Я озадачен тем, почему, поскольку это кажется синтаксически правильным.Создание представления через SQL Server

Я получаю ошибку:

Msg 208, Level 16, State 1, процедура Пэй, линия 5
Неверное имя объекта 'Months.PMonth'.

Но, все перечисленные столбцы в стороне базы данных являются правильными

dbo.Months:

Months Table

dbo.PayStructure:

PayStructure Tablee

Даже при использовании:

USE PayCalculator; 
GO 

SELECT 
    PayStructure.WeeksIncluded, PayStructure.PayDate, PayStructure.PayYear 
FROM 
    PayStructure AS sd 
JOIN 
    AnualMonths.PMonths AS p ON sd.MonthID = AnualMonths.PMonths 
GO 
+0

ошибка довольно ясно. Нет объекта/таблицы/вида, называемого 'Months.PMonth'. Я вижу, что у вас есть таблица под названием «DBO.Months» с столбцом «PMonth». –

ответ

2

Ваш синтаксис довольно перепутались, вы используете старый присоединиться синтаксис (FROM PayStructure, Months), а также нормальный присоединиться синтаксис (JOIN ON...) - вы также пытаетесь присоединиться прямо на колонна и не на таблицу (т.е. вы пытаетесь INNER JOIN Months.PMonth вместо INNER JOIN Months

FROM PayStructure, Months 
INNER JOIN Months.PMonth ON PayStructure.MonthID = PayCalculator.dbo.Months.PMonths 

Основываясь на том, что я думаю, что вы пытаетесь сделать, попробуйте т он ниже сценарий:

USE PayCalculator; 
CREATE VIEW PayCalculator.Pay 
AS 

SELECT ps.WeekIncluded as PaidWeeks, 
     ps.PayDate as PayDate, 
     ps.PayYear as PayYear, 
     months.PMonth 
FROM dbo.PayStructure ps 
JOIN dbo.Months months on ps.MonthId = months.ID 
+0

Новые ошибки: * Msg 207, уровень 16, состояние 1, процедура Pay, строка 9 Недопустимое имя столбца 'PMonths'. * AND * Msg 4104, уровень 16, состояние 1, процедура Pay, строка 4 Идентификатор с несколькими частями «PayStructure.WeekIncluded» не может быть привязан. * –

+0

Я думаю, что вы используете верхний скрипт (который просто скопирован с вашего вопроса, чтобы объяснить ошибку), а не нижний скрипт. Попробуйте нижний скрипт. – Tom

+0

Использование нижнего скрипта, а не верхнего –

1

Типы данных объединяемых столбцов должны быть одинаковыми:

CREATE VIEW PayCalculator.Pay 
AS 

SELECT ps.WeekIncluded as PaidWeeks, 
     ps.PayDate as PayDate, 
     ps.PayYear as PayYear, 
     months.PMonth 
FROM dbo.PayStructure ps 
JOIN dbo.Months months on ps.MonthId = months.ID 
Смежные вопросы