Je suis aux prises avec la création d'une requête. C'est lié à une base de données volumineuse et compliquée mais pour le plaisir de ce post, j'ai réduit le problème à quelque chose de plus simple.Problème avec une requête SQL avec un produit cartésien
J'ai trois tableaux X, Y, Z définis comme
CREATE TABLE [dbo].[X](
[ID] [bigint] NOT NULL
)
CREATE TABLE [dbo].[Y](
[ID] [nchar](10) NOT NULL
)
CREATE TABLE [dbo].[Z](
[IDX] [bigint] NOT NULL,
[IDY] [nchar](10) NOT NULL
)
Ils contiennent les données suivantes
Table X Table Y Table Z
ID ID IDX IDY
-- -- --- ---
1 A 1 A
2 B 1 B
3 C 1 A
Je veux créer une requête qui produit le résultat suivant
Count IDX IDY
===== === ===
2 1 A
1 1 B
0 1 C
0 2 A
0 2 B
0 2 C
0 3 A
0 3 B
0 3 C
Ma pensée initiale était
SELECT COUNT(*), X.ID, Y.ID
FROM
X
CROSS JOIN Y
FULL OUTER JOIN Z ON X.ID = Z.IDX AND Y.ID = Z.IDY
GROUP BY X.ID, Y.ID
mais cela s'avère être sur la mauvaise route.
Des idées?
J'aime la simplicité de votre solution. Si vous considérez X comme comtés, Y comme domaines de droit et Z comme cas pénaux, alors l'ensemble de résultats montre le nombre de cas criminels qui appartiennent à un certain domaine de droit et qui ont été enregistrés dans un certain comté. –
Super, je suis content de pouvoir aider :) –