Ma question est assez similaire à Restricting a LEFT JOIN, avec une variation.Supprimer des doublons de gauche OUTPUT JOIN
En supposant que j'ai une table SHOP et une autre table EMPLACEMENT. L'emplacement est une sorte de table enfant de la table SHOP, qui a deux colonnes d'intérêt, l'une est une clé de division (l'appelant juste KEY) et un numéro "SHOP". Cela correspond au numéro "NO" dans la table SHOP.
J'ai essayé cette jointure externe gauche:
SELECT S.NO, L.KEY
FROM SHOP S
LEFT OUTER JOIN LOCATN L ON S.NO = L.SHOP
mais je reçois beaucoup de doublons car il y a beaucoup d'endroits qui appartiennent à un seul magasin. Je veux les éliminer et juste obtenir une liste de "shop, clé" entrées sans doublons.
Les données sont correctes, mais les doublons apparaissent comme suit:
SHOP KEY
1 XXX
1 XXX
2 YYY
3 ZZZ
3 ZZZ etc.
Je voudrais que les données apparaissent comme ceci:
SHOP KEY
1 XXX
2 YYY
3 ZZZ etc.
table SHOP:
NO
1
2
3
LOCALISATION table:
LOCATION SHOP KEY
L-1 1 XXX
L-2 1 XXX
L-3 2 YYY
L-4 3 YYY
L-5 3 YYY
(Oracle 10g Database)
Vous ne devriez pas obtenir de doublons, bien que, comme vous l'avez indiqué, vous pouvez obtenir plus d'une clé pour un magasin si vous avez plus d'un enregistrement de localisation pour le magasin. Veuillez expliquer ou donner un exemple de ce que vous entendez par "duplicata". –
@Marcus J'ai pensé la même chose au début, mais je suppose que plusieurs emplacements peuvent avoir la même clé de division. –
@ Marcus & Martin: ah je ne pense pas que je l'ai fait comprendre. Oui Plusieurs emplacements peuvent et ont une même clé de division. (À proprement parler, divnkey est le parent de la boutique, donc la hiérarchie va comme ce Divnkey> Shop> location). J'essaie de remplir la table de Shop avec les données de clé de division appropriées. Cela peut sembler bizarre, mais c'est un processus ponctuel et j'essayais de générer des scripts de mise à jour pour la table SHOP à partir des données de la table LOCATION - via une commande 'update shop set divnkey = ....'. Je ne voulais pas compliquer la question alors mettez un simple sélectionner. –