Как найти, какой столбец вызывает дублирование строк в операторе JOIN? - PullRequest
0 голосов
/ 25 апреля 2018

MS SQL Server.У меня такая ситуация:

SELECT
    x1,
    x2,
    x3,
    x4,
    x5,
    x6,
    x7,
    x8,
    x9,
    x10,
    x11,
    x12,
    x13
FROM
    T1  -- this has a lot of columns
JOIN
    T2, -- this has a lot of columns
    T3, -- this has a lot columns as well
    T4, -- same here and other tables
    T5,
    T6,
    T7,
    T8,
    T9,
    T10,
    T11,
    T12,
    T13,
    T14

И у меня есть несколько дублированных строк, поэтому столбец, содержащий разные значения, не входит в число этих 13 выбранных столбцов.Я хочу решить эту проблему, обнаружив, какой столбец в соединенных таблицах имеет различное значение, а затем решить, что с ним делать.

Решение состоит в том, чтобы выбрать T1.*, T2.* и т. Д., И тщательно проанализировать результаты.,Дело в том, что мне пришлось бы выбирать много столбцов и тратить время на выполнение повторяющейся задачи.

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

EDIT

Я нашел отличный инструмент, который может упростить анализ запроса select *Результаты.

Dbeaver , бесплатный универсальный менеджер баз данных, имеет панель «Calc» в представлении результатов.Можно выбрать любые ячейки / строки / столбцы, и он рассчитывает количество и различные значения на лету.Они могут быть сгруппированы по столбцам, и это именно то, что нужно при поиске того, какой столбец имеет различные значения.Супер полезно.

Ссылка: https://github.com/dbeaver/dbeaver/wiki/Panels

1 Ответ

0 голосов
/ 25 апреля 2018

Один из вариантов такой -

SELECT
    x1, count (DISTINCT T1.*),
    x2, count (DISTINCT T2.*),
    x3, count (DISTINCT T3.*)
FROM
    T1  -- this has a lot of columns
JOIN
    T2, -- this has a lot of columns
    T3
GROUP BY
    x1,
    x2,
    x3

Это скажет вам, какие таблицы имеют повторяющиеся строки (таблицы с количеством> 1) ... затем вы можете проанализировать условие соединения для этих таблиц

...