Выборка данных после левого запроса на соединение путем удаления дубликатов? - PullRequest
0 голосов
/ 31 августа 2011

Я использовал запрос левого соединения с двумя таблицами, поэтому я получаю несколько значений для значения столбца основной таблицы в наборе результатов.Как я могу удалить дубликаты в этом?

Запрос:

SELECT cc.CCODE, cc.CNAME, rc.RCODE, rc.RNAME
  FROM RCODE AS rc 
  LEFT JOIN CCODE AS cc ON cc.RCODE = rc.RCODE
 GROUP BY cc.ccode

Для rc.RCODE Я получаю дублирующиеся значения, если в дочерней таблице для этого есть более 1 записи.Как только я получу набор результатов, как я могу удалить это на уровне кода?

первая таблица -> вторая таблица RCODE INDIA PAKISTAN AMERICA -> RCODE CCODE INDIA KERALA INDIA KARNATAKA AMERICA TEMP Мне нужно получить INDIA ->и его CCODE ANERICA, его CCODE PAKISTAN, его CCODE -> если его ноль в порядке для получения RCODE

1 Ответ

0 голосов
/ 31 августа 2011

Ваш вопрос не так ясен, как мог бы быть, но если вы хотите иметь одну строку в наборе результатов для каждой строки в таблице RCode, содержащую не более одной строки информации из таблицы CCode, то вам следует написатьваш запрос, чтобы генерировать именно то, что вы хотите, а не возиться с набором результатов после извлечения данных.Так как вам нужна одна строка из таблицы CCode на значение RCode, мы можем использовать:

SELECT cc.CCode, cc.CName, rc.RCode, rc.RName
  FROM RCode AS rc
  LEFT JOIN (SELECT c1.CCode, c1.RCode, c1.CName
               FROM CCode AS c1
               JOIN (SELECT c2.RCode, MAX(c2.CCode) AS CCode
                       FROM CCode AS c2
                      GROUP BY c2.RCode) AS c3
                 ON c1.CCode = c3.CCode AND c1.RCode = c3.RCode
            ) AS cc
    ON cc.RCode = rc.RCode

Самый внутренний подзапрос (помеченный c3) дает вам максимальный CCode для каждого RCode в таблице CCode.Когда это соединяется с таблицей CCode, это также дает вам соответствующее CName.Этот результирующий набор (помеченный cc) остается внешним соединенным с таблицей RCode, но в результирующем наборе cc для каждого RCode имеется не более одной строки, если только в таблицах CCode не содержится несколько строк с одинаковым RCode и максимальным CCodeзначение.Если это проблема, то вам нужно найти альтернативный механизм, который даст вам одну строку из таблицы CCode на значение RCode (возможно, MAX(CName) вместо MAX(CCode)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...