SQL Server 2005数据类型 - 努力获取使用当前数据类型的视图

时间:2013-02-08 14:13:55

标签: sql-server-2005 sqldatatypes

我正在为手机创建一个新的数据库。它包含了很多关于手机,SIM卡等的信息。我正在努力将表格中的信息转换成视图。我做了一些测试,但在某些列上总是收到错误。例如,其中一个字段是SIM卡号,您都知道它是一个长号码。我已经尝试将此数字设置为bigint,varchar和nvarchar,但始终收到错误消息“varchar值'value'的转换溢出了一个int列。超出了最大整数值。”

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

提前致谢。

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

1 个答案:

答案 0 :(得分: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