日期:2014-05-17 浏览次数:20671 次
礼物表:
id name
1 黄瓜
2 西红柿
3 西瓜
持有表:
id 用户名 礼物id 数量
1 张三 1 3
想根据所有礼物查询某人持有数量
where name='张三'
用户名 礼物名 数量
张三 黄瓜 3
张三 西红柿 0
张三 西瓜 0
where name='李四'
用户名 礼物名 数量
李四 黄瓜 0
李四 西红柿 0
李四 西瓜 0
DECLARE @name SYSNAME
SET @name = '张三'
;WITH tb1(id,NAME)
AS
(
SELECT 1,'黄瓜'
UNION ALL
SELECT 2,'西红柿'
UNION ALL
SELECT 3,'西瓜'
),
tb2(id,用户名,礼物id,数量)
AS
(
SELECT 1,'张三',1,3
)
SELECT 用户名 = isnull(tb2.用户名,@name),礼物名 = tb1.name,数量 = isnull(tb2.数量,0) FROM tb1 LEFT JOIN tb2 on tb1.id = tb2.礼物id
AND tb2.用户名= @name
用户名 礼物名 数量
张三 黄瓜 3
张三 西红柿 0
张三 西瓜 0
DECLARE @name SYSNAME
SET @name = '李四'
;WITH tb1(id,NAME)
AS