1
我正在使用标量值函数来确定系统的用户是否在其配置文件中包含图像,音频文件或视频。T-SQL中的简单数学
当我搜索成员时,我想按照他们拥有的媒体数量来排列成员。因此,举例来说,拥有所有媒体(视频,音频和图像)的用户对于他们拥有的每个媒体都将获得3,1分。如果他们有2个媒体(图像和视频),但没有音频,他们会得到2.这将列在拥有所有3个媒体的所有用户之后。
存储过程具有这样的:
SELECT
a.MemberID,
a.UserName,
a.LastLogin,
a.City,
b.Abbr,
c.Country,
a.AvatarMed,
a.Gender,
sbuser.sf_MemberHasImages(a.MemberID),
sbuser.sf_MemberHasVideo(a.MemberID),
sbuser.sf_MemberHasAudio(a.MemberID),
d.Domain,
sbuser.sf_DisplayName(a.MemberID),
a.CreateDate,
a.Claimed,
a.ProfileTypeID,
a.Zip,
a.PhoneNbr,
a.PrPhone
FROM Member a
LEFT JOIN State b ON b.StateID = a.StateID
INNER JOIN Country c ON c.countryID = a.CountryID
INNER JOIN Region d ON d.RegionID = a.MemberREgionID
WHERE ProfileTypeID IS NOT NULL
AND (sbuser.sf_DisplayName(a.MemberID) LIKE @UserName + '%')
AND a.MemberID <> @MemberID
ORDER BY a.Claimed DESC, a.AvatarTiny DESC, sbuser.sf_MemberHasMedia(a.MemberID)
如果您注意顺序,它包含以下内容:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [sbuser].[sf_MemberHasMedia](@MemberID bigint)
RETURNS BIT
AS
BEGIN
DECLARE @OUTSTR INT
DECLARE @OUT1 BIT
DECLARE @OUT2 BIT
DECLARE @OUT3 BIT
SET @OUT1 = (SELECT CAST(COUNT(MemberAudioID) AS BIT) FROM MemberAudio
WHERE MemberID @MemberID)
RETURN @OUTSTR = @OUT1
END
RETURNS BIT
AS
BEGIN
SET @OUT2 = (SELECT CAST(COUNT(a.MemberImgID) AS BIT)
From MemberImg a
INNER JOIN MemberImgGallery b ON b.MemberImgGalleryID=a.MemberImgGalleryID
WHERE b.MemberID = @MemberID)
RETURN @OUTSTR = @OUTSTR + @OUT2
END
RETURNS BIT
AS
BEGIN
SET @OUT3 = (SELECT CAST(COUNT(MemberVideoID) AS BIT) FROM MemberVideo
WHERE MemberID = @MemberID)
RETURN @OUTSTR = @OUTSTR + @OUT3
END
我在这个逻辑丢失,它应该很容易。任何帮助将不胜感激。
非常感谢, 保罗
收到以下错误:消息8117,级别16,状态1,过程sf_MemberHasMedia,第25行 操作数数据类型位是增加操作符无效。 – neojakey 2011-01-10 21:06:27