לפניכם טבלת מכירות של חנות למכשירים סלולריים –
כתבו שאילתה אשר עבור לקוח מסויים מחזירה את כל הלקוחות אשר קנו את אותם מוצרים שהוא קנה או יותר. לדוגמא – אם בשאילתה התבקשנו לבצע בדיקה על יוסי, הלקוח שיחזור הוא תומר (תומר הוא היחיד אשר רכש את כל המכשירים של יוסי וגם מכשיר נוסף), אם בשאילתא התבקשנו לבצע בדיקה על משה, הלקוח שיחזור הוא רועי (רועי הוא היחיד שיש לו את כל המכשירים של משה וגם מכשיר נוסף).
CREATE TABLE [dbo].[sales](
[name] [varchar](25) ,
[product_name] [varchar](25)
)
GO
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Yossi', N'Iphone6')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Yossi', N'Iphone6')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Yossi', N'Iphone5')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Yossi', N'Iphone4')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Moshe', N'Iphone6')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Moshe', N'Samsung Galaxy S5')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Tomer', N'Iphone6')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Tomer', N'Iphone5')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Tomer', N'Iphone4')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Tomer', N'Samsung Galaxy S4')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Roee', N'Samsung Galaxy S4')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Roee', N'Iphone4')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Roee', N'Samsung Galaxy S5')
INSERT [dbo].[sales] ([name], [product_name]) VALUES (N'Roee', N'Iphone6')
SELECT DISTINCT S.name
FROM sales s
WHERE NOT EXISTS (
SELECT s1.product_name
FROM sales s1
WHERE s1.name = 'Yossi' AND
NOT EXISTS (
SELECT s3.product_name
FROM sales s3
WHERE s3.name = s.name AND s3.name <> s1.name AND
s3.product_name = s1.product_name
)
)