这并不像标题那么简单。 (什么是合适的标题?)我认为描述我的问题的最简单方法是举例。
我的目标是列出每个孩子失踪的彩色气球。
假设表1包含2列中的以下数据:
Child BalloonColor
- 莎莉黄
- 莎莉怀特
- Sally Blue
- Bob Red
- Bob Green
- Bob White
这是表2,也是2列。
ColorCode颜色
- Y黄色
- W White
- R Red
- B Blue
- G Green
- P Pink
我需要写一个结果集来说明每个孩子需要拥有所有颜色的颜色气球。
- Sally,R,Red
- 莎莉,G,格林
- Sally,P,Pink
- Bob,Y,Yellow
- Bob,B,Blue
- Bob,P,Pink
我的例子很小,但假设我的表1中有1000个孩子,表2中有75个颜色。我怎样才能检查每个孩子,一次一个,是我的终极问题? Not in
查询只会产生" P,Pink",但您可以看到我需要在子级别而不是表级别。
我不是开发人员,但可以编写好的SQL语句。
MS SQL Server 2008 R2。
先谢谢你,迈克。
答案 0 :(得分:1)
SELECT
SQ.child_name,
BC.balloon_color
FROM
(
SELECT DISTINCT
child_name
FROM
Child_Balloons
) SQ
CROSS JOIN Balloon_Colors BC
WHERE
NOT EXISTS (
SELECT *
FROM Child_Balloons CB
WHERE
CB.child_name = SQ.child_name AND
CB.balloon_color = BC.balloon_color
)