Moje pytanie jest podobne do Restricting a LEFT JOIN, z odmianą.Usuwanie duplikatów z LEFT OUTER DOŁĄCZ
Zakładając, że mam stół SKLEP i kolejną lokalizację LOCATION. Lokalizacja jest rodzajem tabeli podrzędnej tabeli SKLEP, która ma dwie kolumny zainteresowania, jedna to klucz podziału (nazywając go tylko kluczem) i numer "SKLEP". Dopasowuje się do numeru "NIE" w tabeli SKLEP.
Próbowałem to lewe sprzężenie zewnętrzne:
SELECT S.NO, L.KEY
FROM SHOP S
LEFT OUTER JOIN LOCATN L ON S.NO = L.SHOP
ale dostaję wiele duplikatów, ponieważ istnieje wiele miejsc, które należą do jednego sklepu. Chcę je wyeliminować i po prostu uzyskać listę wpisów "sklep, klucz" bez duplikatów.
Dane są poprawne, ale duplikaty wyglądać następująco:
SHOP KEY
1 XXX
1 XXX
2 YYY
3 ZZZ
3 ZZZ etc.
Chciałbym dane, aby wyglądał następująco:
SHOP KEY
1 XXX
2 YYY
3 ZZZ etc.
stół SHOP:
NO
1
2
3
MIASTO tabela:
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)
Nie powinieneś dostawać żadnych duplikatów, ponieważ, jak stwierdzono, możesz otrzymać więcej niż jeden klucz do sklepu, jeśli masz więcej niż jeden rekord lokalizacji dla sklepu. Proszę wyjaśnić lub podać przykład tego, co rozumie się przez "duplikowanie". –
@ Marcus Z początku myślałem, że to samo, ale zakładam, że wiele lokalizacji może mieć ten sam klucz podziału. –
@Marcus & Martin: ah nie sądzę, że to wyjaśniłem. Tak Wiele lokalizacji może i ma ten sam klucz podziału. (Ściśle mówiąc divnkey jest nadrzędnym elementem sklepu, więc hierarchia przebiega w taki sposób, jak Divnkey> Shop> location). Próbuję wypełnić tabelę Sklepu odpowiednimi danymi klucza podziału. Może brzmi to dziwnie, ale jest to proces jednorazowy i próbowałem wygenerować skrypty aktualizacji dla SKLEPU z danych LOCATION tabeli - za pomocą komendy "update shop set divnkey = ....". Nie chciał komplikować pytania, więc po prostu wybierz. –