La mia domanda è abbastanza simile a Restricting a LEFT JOIN, con una variazione.Rimuovi duplicati da SINISTRA OUTER JOIN
Supponendo di avere un tavolo NEGOZIO e un altro tavolo POSIZIONE. La posizione è una sorta di tabella figlio della tabella SHOP, che ha due colonne di interesse, una è una chiave di divisione (chiamandola solo CHIAVE) e un numero "NEGOZIO". Questo corrisponde al numero "NO" nella tabella SHOP.
Ho provato questo join esterno sinistro:
SELECT S.NO, L.KEY
FROM SHOP S
LEFT OUTER JOIN LOCATN L ON S.NO = L.SHOP
ma sto ottenendo un sacco di duplicati in quanto ci sono molte posizioni che appartengono ad un unico negozio. Voglio eliminarli e ottenere solo un elenco di voci "negozio, chiave" senza duplicati.
I dati sono corretti, ma i duplicati appaiono come segue:
SHOP KEY
1 XXX
1 XXX
2 YYY
3 ZZZ
3 ZZZ etc.
Vorrei i dati di apparire come questo, invece:
SHOP KEY
1 XXX
2 YYY
3 ZZZ etc.
tavolo SHOP:
NO
1
2
3
LOCATION tabella:
LOCATION SHOP KEY
L-1 1 XXX
L-2 1 XXX
L-3 2 YYY
L-4 3 YYY
L-5 3 YYY
(Oracle Database 10g)
Non dovresti ricevere duplicati, tuttavia, come hai affermato, puoi ottenere più di una chiave per un negozio se hai più di un record di posizione per il negozio. Per favore spiega o fai un esempio di cosa intendi con "duplicato". –
@Marcus All'inizio pensavo lo stesso, ma suppongo che più sedi possano avere la stessa chiave di divisione. –
@Marcus & Martin: ah non penso di averlo chiarito. Sì, più sedi possono avere e hanno una stessa chiave di divisione. (In pratica, divnkey è il genitore del negozio, quindi la gerarchia va come questa Divnkey> Negozio> posizione). Sto cercando di compilare la tabella del negozio con i dati della chiave della divisione appropriata. Può sembrare strano, ma è un processo unico e stavo cercando di generare script di aggiornamento per la tabella SHOP dai dati della tabella di LOCATION - tramite un comando select 'update shop set divnkey = ....'. Non volevo complicare la domanda, quindi metti una selezione semplice. –