Supprimer les Doublons d'une JOINTURE EXTERNE GAUCHE
Ma question est assez similaire à La limitation d'une JOINTURE GAUCHE, avec une variation.
En supposant que j'ai un MAGASIN de tableau et un autre EMPLACEMENT de la table. L'emplacement est une sorte de table enfant table de l'ATELIER, qui a deux colonnes d'intérêt, l'un est une Division de la Clé (de l'appeler juste la CLÉ) et une "BOUTIQUE" le nombre. Cela correspond au Nombre de "NON" dans le tableau de la BOUTIQUE.
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 j'ai beaucoup de doublons car il ya beaucoup d'endroits qui appartiennent à un seul atelier. Je veux les supprimer, et viens d'obtenir une liste de "de la boutique, la touche" 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 à la place:
SHOP KEY
1 XXX
2 YYY
3 ZZZ etc.
BOUTIQUE de tableau:
NO
1
2
3
EMPLACEMENT de la table:
LOCATION SHOP KEY
L-1 1 XXX
L-2 1 XXX
L-3 2 YYY
L-4 3 YYY
L-5 3 YYY
(Base de données ORACLE 10g)
- Vous ne devriez pas être obtenir des doublons, même si, comme vous l'avez indiqué, vous pouvez obtenir plus d'une clé pour un magasin, si vous avez plus d'un emplacement d'enregistrement pour la boutique. Veuillez expliquer ou donner un exemple de ce que vous entendez par "dupliquer".
- Je pensais la même chose au début, mais je suis en supposant que plusieurs emplacements peuvent avoir la même division de la clé.
- Martin: ah je ne pense pas que je l'a fait comprendre. Oui Plusieurs emplacements peuvent avoir, et ont une même division de la clé. (Strictement parlant divnkey est le parent de la boutique. Donc, la hiérarchie va comme ceci Divnkey > Boutique > emplacement). Je suis en train de remplir la Boutique du tableau avec la répartition appropriée des données clés. Peut sembler bizarre, mais c'est un processus d'une fois et j'étais en train de générer des scripts de mise à jour pour la table de la BOUTIQUE de l'EMPLACEMENT de la table de données par le biais d'un sélectionnez " mise à jour de la boutique de jeu de divnkey = ....' commande. Ne veux pas compliquer la question, afin de mettre un select simple.
- Désolé juste vu votre réponse. Sera mise à jour de ma réponse encore une fois.
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de regrouper PAR "S. N' & 'L. CLÉ'
GROUP BY
qui est équivalent àDISTINCT
sur Oracle asktom.oracle.com/pls/asktom/... mais peut parfois être plus rapide que sur les autres moteurs, par exemple, Postgres (à l'aide de hachages au lieu de tri).MODIFIER à la Suite de la mise à jour de votre scénario
Je pense que vous devriez être en mesure de le faire avec un simple sous-requête (bien que je n'ai pas testé cette contre une base de données Oracle). Quelque chose comme ce qui suit
Ci-dessus génère une erreur dans le cas d'une boutique en étant associées à des endroits qui sont en plusieurs divisions.
Si vous voulez juste d'ignorer cette possibilité et sélectionnez arbitraire dans ce cas, vous pourriez utiliser
J'ai eu ce problème aussi, mais je ne pouvais pas utiliser GROUP BY de le corriger car j'étais également de retour des champs de type TEXTE. (En va de même pour l'utilisation de DISTINCT).
Ce code m'a donné des doublons:
Je l'ai fixée par le réécrire ainsi:
Comme vous pouvez le voir je n'ai pas de soins sur les données dans le 2ème tableau (
thing_y
), juste qu'il n'y avait plus grand que zéro correspond à larpt_id
en son sein. (FYI:rpt_id
était pas la clé primaire sur le 1er tableau,master_x
).