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