Câu hỏi của tôi khá giống với Restricting a LEFT JOIN, với một biến thể.Xóa các mục trùng lặp khỏi LEFT OUTER JOIN
Giả sử tôi có một bảng SHOP và một bảng LOCATION. Vị trí là một loại bảng con của bảng SHOP, có hai cột quan tâm, một là một khóa phân chia (gọi nó là KEY) và một số "SHOP". Điều này khớp với Số "KHÔNG" trong bảng SHOP.
tôi đã cố gắng bên ngoài trái này tham gia:
SELECT S.NO, L.KEY
FROM SHOP S
LEFT OUTER JOIN LOCATN L ON S.NO = L.SHOP
nhưng tôi nhận được rất nhiều bản sao vì có rất nhiều địa điểm mà thuộc về một cửa hàng duy nhất. Tôi muốn loại bỏ chúng và chỉ nhận được một danh sách các mục "cửa hàng, khóa" không trùng lặp.
Các dữ liệu là đúng nhưng bản sao xuất hiện như sau:
SHOP KEY
1 XXX
1 XXX
2 YYY
3 ZZZ
3 ZZZ etc.
Tôi muốn dữ liệu xuất hiện như thế này thay vì:
SHOP KEY
1 XXX
2 YYY
3 ZZZ etc.
CỬA HÀNG bảng:
NO
1
2
3
VỊ TRÍ bảng:
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)
Bạn không nên nhận bất kỳ bản sao nào, tuy nhiên, như bạn đã nêu, bạn có thể nhận được nhiều hơn một khóa cho một cửa hàng nếu bạn có nhiều hơn một bản ghi vị trí cho cửa hàng. Vui lòng giải thích hoặc cho ví dụ về ý nghĩa của bạn bằng "trùng lặp". –
@Marcus Lúc đầu tôi nghĩ tương tự nhưng tôi giả sử rằng nhiều vị trí có thể có cùng một khóa chia. –
@Marcus & Martin: ah tôi không nghĩ rằng tôi đã làm điều này rõ ràng. Có Nhiều vị trí có thể và có cùng một khóa chia. (Nói đúng là divnkey là cha mẹ của cửa hàng. Vì vậy, phân cấp sẽ giống như Divnkey> Shop> location này). Tôi đang cố gắng để điền vào bảng của Shop với dữ liệu khóa phân chia thích hợp. Có thể âm thanh lạ, nhưng đó là một quá trình một thời gian và tôi đã cố gắng để tạo ra các kịch bản cập nhật cho bảng SHOP từ bảng dữ liệu của LOCATION - thông qua lệnh chọn 'update shop set divnkey = ....'. Không muốn làm phức tạp câu hỏi để đặt một lựa chọn đơn giản. –