1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
--Les talbes + Valeurs
DECLARE @Client table(Numero int, Nom char(1))
DECLARE @Ligne table(Numero_client int, Numero_produit char(1))
DECLARE @Produit table(Numero int, Nom char(1))
INSERT INTO @Client(Numero, Nom) VALUES(1,'a')
INSERT INTO @Client(Numero, Nom) VALUES(2,'b')
INSERT INTO @Client(Numero, Nom) VALUES(3,'c')
INSERT INTO @Client(Numero, Nom) VALUES(4,'d')
INSERT INTO @Produit(Numero, Nom) VALUES(1,'e')
INSERT INTO @Produit(Numero, Nom) VALUES(2,'f')
INSERT INTO @Produit(Numero, Nom) VALUES(3,'g')
INSERT INTO @Produit(Numero, Nom) VALUES(4,'h')
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(1,1)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(1,2)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(1,3)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(2,1)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(2,2)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(2,3)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(3,1)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(3,2)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(3,4)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(4,1)
INSERT INTO @Ligne(Numero_client, Numero_produit) VALUES(4,2)
--Le client pour lequel on cherche les autres clients ayant EXACTEMENT TOUS les même produits
DECLARE @Numero_client int
SET @Numero_client = 4
--La requete
SELECT DISTINCT Numero_client
FROM @Ligne x
WHERE NOT EXISTS
(SELECT *
FROM (SELECT Numero_produit
FROM @Ligne
WHERE Numero_client = @Numero_client
) AS y
WHERE NOT EXISTS
(SELECT *
FROM @Ligne z
WHERE x.Numero_client = z.Numero_client
AND y.Numero_produit = z.Numero_produit
)
)
AND Numero_client <> @Numero_client |
Partager