【发布时间】:2021-04-08 10:03:10
【问题描述】:
约翰·格雷买了多少手电筒?
这是我需要达到的结果:
到目前为止,我有这个:
IF NOT (EXISTS (SELECT
c.[customerid],
c.[firstname],
c.[lastname],
cp.[quantity]
FROM [dbo].[customers] AS c
INNER JOIN [dbo].[Customer_Purchases] AS cp
ON c.[customerid] = cp.[customerid]
WHERE
c.[customerid] = 10101
AND cp.[item] = 'Flashlight'
GROUP BY
c.[customerid],
c.[firstname],
c.[lastname],
cp.[quantity]
)
)BEGIN
SELECT
c.[customerid] AS ID,
c.[firstname] AS First Name,
c.[lastname] AS Last Name,
'Flashlight' AS Item,
'0' As Quantity
FROM [dbo].[customers] AS c
WHERE
c.[customerid] = 10101
GROUP BY
c.[customerid],
c.[firstname],
c.[lastname]
END
更实用的方法是什么?
我已经处理了几个关于此类问题的 SO 线程(this、this、this 和 this),但必要的JOIN 似乎对我来说太复杂了。
编辑 1:
- 更正了代码中的不一致之处;
- 提供了指向 SO 线程的超链接。
【问题讨论】:
-
" 因为我在尝试时出现了各种错误" 这些错误是什么?
-
@Larnu 我想反对票是针对错误部分的。你想让我把它们列出来,或者编辑问题以恢复反对票?
-
“我想对错误部分投反对票。” 这不是我的,所以我不知道我害怕。可能有多种原因,包括说您遇到了错误,但没有告诉我们该错误是什么。当人们说“我在Stack Overflow 上查看各种帖子”时,有很多用户不喜欢它,但也不要引用它们。但是,我不能恢复我没有投下的反对票;只有选民才能做到这一点。
-
@Larnu,我已经对问题进行了一些更正,因为它们的必要性已被指出。无法提供错误消息。因为他们当时没有收集它们。如果有办法从日志中提取它们,请告诉我。
标签: sql tsql sql-server-2008