Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Utwórz kolumnę wyliczaną przy użyciu danych z innej tabeli

W tym celu możesz utworzyć funkcję zdefiniowaną przez użytkownika:

CREATE FUNCTION dbo.CountUses(@pictureId INT)
RETURNS INT
AS
  BEGIN
      RETURN
        (SELECT Count(id)
         FROM   PictureUse
         WHERE  PictureId = @PictureId)
  END 

Obliczoną kolumnę można następnie dodać w następujący sposób:

ALTER TABLE dbo.Picture
ADD NofUses AS dbo.CountUses(Id)

Jednak wolałbym wyrobić sobie pogląd na to:

CREATE VIEW PictureView
AS
  SELECT Picture.Id,
         PictureName,
         Picture.CreateDate,
         Count(PictureUse.Id) NofUses
  FROM   Picture
         JOIN PictureUse
           ON Picture.Id = PictureUse.PictureId
  GROUP  BY Picture.Id,
            PictureName,
            Picture.CreateDate 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przywracanie dostępu do instancji SQL Server bez ponownego uruchamiania

  2. Jak używać wszystkich operatorów logicznych w SQL Server — samouczek SQL Server / TSQL, część 126

  3. CAST(DATETIME AS DATE) przez klauzulę WHERE

  4. Uzyskaj wartości graniczne dla tabeli partycjonowanej w programie SQL Server (T-SQL)

  5. Jakie zasoby są dostępne dla dostrajania wydajności bazy danych?