2013-02-08 19 views
0

我正在为手机创建一个新的数据库。它包含了很多关于手机,SIM卡等的信息。我正努力将表格中的信息转换为视图。我做了一些测试,但总是在某些列上收到错误。例如,其中一个字段是SIM卡号码,您会知道这是一个很长的数字。我曾尝试将此数字设为bigint,varchar和nvarchar,但总是收到一条错误消息,指出“varchar值的转换值'溢出了一个int列,超出了最大整数值”。SQL Server 2005数据类型 - 努力获得使用当前数据类型的视图

我对数据库的知识水平很高,但由于某些原因,我似乎无法为这些字段找到正确的数据类型。如果有更多经验的人可以帮助我,那将非常感激。

在此先感谢。

SELECT dbo.Sims.Number, 
    dbo.Sims.ACCOLC, 
    dbo.Users.Title, 
    dbo.Users.Name, 
    dbo.Users.Section, 
    dbo.Users.Directorate, 
    dbo.UserHistory.StartDate, 
    dbo.UserHistory.EndDate, 
    dbo.Users.Codes 
FROM dbo.UserHistory 
INNER JOIN dbo.Users 
    ON dbo.UserHistory.[User] = dbo.Users.ID 
INNER JOIN dbo.Sims 
    ON dbo.UserHistory.Number = dbo.Sims.Number 
INNER JOIN dbo.Models 
    ON dbo.UserHistory.Model = dbo.Models.ID 
+0

为什么您需要根据基表中的任何属性来转换数据类型? – 2013-02-08 14:15:39

+0

@MartinSmith - 不明白你的意思是转换数据类型,对不起! – CodingNewbie 2013-02-08 14:18:52

+0

显示一些代码。一个视图只是一个'SELECT'语句。你说“我已经尝试过把这个数字设为bigint,varchar和nvarchar”,如果你没有投射到那些数据类型,你的意思是什么? – 2013-02-08 14:20:26

回答

0

有一两件事,我可能会建议是检查,如果你是想要每个表之间的INNER JOIN。这需要在所有表中匹配行,如果你没有匹配的行,那么你将不会得到结果。

你可能想尝试改变JOIN类型的LEFT JOIN

SELECT s.Number, 
    s.ACCOLC, 
    u.Title, 
    u.Name, 
    u.Section, 
    u.Directorate, 
    uh.StartDate, 
    uh.EndDate, 
    uh.Codes 
FROM dbo.Users u 
LEFT JOIN dbo.UserHistory uh 
    ON u.ID = uh.[User] 
LEFT JOIN dbo.Sims s 
    ON uh.Number = s.Number 
LEFT JOIN dbo.Models m 
    ON uh.Model = m.ID 

这个版本将返回其他表中的所有users即使它有不匹配的行。

相关问题