Мой вопрос очень похож на Restricting a LEFT JOIN с вариацией.Удалить дубликаты от LEFT OUTER JOIN
Предполагая, что у меня есть стол SHOP и другая таблица LOCATION. Местоположение - это своего рода дочерняя таблица таблицы SHOP, которая имеет два столбца, представляющих интерес, один - это ключ раздела (называющий его KEY) и номер «SHOP». Это соответствует номеру «НЕТ» в таблице SHOP.
Я попробовал эту левые внешнее соединение:
SELECT S.NO, L.KEY
FROM SHOP S
LEFT OUTER JOIN LOCATN L ON S.NO = L.SHOP
, но я получаю много дублей, так как есть много мест, которые принадлежат к одному магазину. Я хочу их устранить и просто получить список записей «магазин, ключ» без дубликатов.
данные верны, но дубликаты выглядят следующим образом:
SHOP KEY
1 XXX
1 XXX
2 YYY
3 ZZZ
3 ZZZ etc.
Я хотел бы данные, чтобы выглядеть как это вместо:
SHOP KEY
1 XXX
2 YYY
3 ZZZ etc.
МАГАЗИН стол:
NO
1
2
3
МЕСТОНАХОЖДЕНИЕ стол:
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)
Вы не должны получать какие-либо дубликаты, хотя, как вы заявили, вы можете получить более одного ключа для магазина, если у вас есть несколько записей местоположения для магазина. Пожалуйста, объясните или укажите пример того, что вы подразумеваете под «дублированием». –
@Marcus Я думал, что сначала, но я предполагаю, что несколько местоположений могут иметь один и тот же ключ разделения. –
@Marcus & Martin: ах, я не думаю, что я это ясно понял. Да Несколько мест могут иметь и иметь один и тот же ключ разделения. (Строго говоря, divnkey является родителем магазина. Таким образом, иерархия похожа на это Divnkey> Shop> location). Я пытаюсь заполнить таблицу Shop соответствующими данными ключа разделения. Может показаться странным, но это одноразовый процесс, и я пытался генерировать сценарии обновления для таблицы SHOP из таблицы данных LOCATION - с помощью команды select update set set divnkey = ..... Не хотел усложнять вопрос, поэтому поставил простой выбор. –