0

携帯電話用の新しいデータベースを作成中です。携帯電話、SIM カードなどに関する多くの情報が含まれています。テーブル内の情報をビューに変換するのに苦労しています。いくつかのテストを実行しましたが、特定の列で常にエラーが発生します。たとえば、フィールドの 1 つは 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

私が提案するかもしれないことの1つは、実際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、他のテーブルに一致する行がない場合でもすべてを返します。

于 2013-02-10T01:37:40.147 に答える