我有三个表File
:Word
和WordInstance
:
CREATE TABLE [dbo].[File](
[FileId] [int] IDENTITY(1,1) NOT NULL,
[FileName] [nchar](10) NOT NULL)
CREATE TABLE [dbo].[Word](
[WordId] [int] IDENTITY(1,1) NOT NULL,
[Word] [nchar](10) NOT NULL,
[LatestFileId] [int] NOT NULL)
CREATE TABLE [dbo].[WordInstance](
[WordInstanceId] [int] IDENTITY(1,1) NOT NULL,
[WordId] [int] NOT NULL,
[FileId] [int] NOT NULL)
请注意,为了简洁起见,我省略了外键。给定一个FileId
我想返回一个真/假值,它告诉我是否有其他文件与指定的单词相同FileId
。
从这个开始,我知道它不起作用,但按原样提供:
CREATE FUNCTION [dbo].[DoesFileContainLastWord]
(
@fileId INT
)
RETURNS BIT
AS
BEGIN
DECLARE @count INT
DECLARE @ret BIT
SELECT @count = COUNT([tW].[WordId])
FROM [Word] AS tW
INNER JOIN [WordInstance] AS tWI
ON [tW].[WordId] = [tWI].[WordId]
INNER JOIN [File] AS tF
ON [tF].[FileId] = [tW].[LatestFileId]
WHERE [tF].[FileId] = @fileId
IF @count > 0
BEGIN
SET @ret = 0
END
ELSE
SET @ret = 1
RETURN @ret
END;