0

我正在为手机创建一个新数据库。它包含很多关于手机、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
4

1 回答 1

0

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

您可能想尝试将JOIN类型更改为 a 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即使其他表中没有匹配的行,此版本也会返回所有内容。

于 2013-02-10T01:37:40.147 回答