Как проверить в mysql, что нормализованная таблица в порядке или нет в mysql - PullRequest
1 голос
/ 23 марта 2012

МОЯ базовая таблица имеет два столбца, предполагают col1, col2.col1 имеет идентификатор, col2 имеет много значений, разделенных запятыми, colm1 является первичным ключом.как

  col1        col2
 ---------------------
  123        (22,34,12)
  124        (45,67,11)

Теперь у меня есть другая таблица, которая находится в нормализованной форме первой, например

col1     col2
---------------
123       22 
123       34
123       12
124       45 
124       67

Теперь вопрос в том, что я хочу проверить, что моя вторая таблица имеет данные exectпервого стола или нет.А если нет, то как найти эту ошибку.

(мне нужно отдельно показать дополнительную строку второй таблицы и пропущенную строку второй таблицы)

Ответы [ 4 ]

0 голосов
/ 26 марта 2012

Спасибо всем за предложения. Я получил свое решение с помощью этого запроса

выберите * table1 как присоединиться к table2 как b на a.col1 = b.col1 где a.col2 не похож на concat ('%', b.col2, '%')

0 голосов
/ 23 марта 2012

Получите курсор или набор записей, и затем вы выполните цикл всех записей из таблицы 1,

rs_col1 = id rs_col2 = значения, разделенные запятыми

за каждую запись в rs выберите * из таблицы_2, где id = rs_col1 и table_2.col2 не в (rs_col2) петля

0 голосов
/ 23 марта 2012

Я думаю, что ваши ненормализованные данные не совсем полезны, так как данные не упорядочены, поэтому вы не можете использовать group_concat. Однако вы можете найти решение, используя find_in_set и посчитав количество совпадений col2 (нормализованная таблица) в col2 (ненормализованная таблица), сгруппированных по col1. Затем вам нужно убедиться, что количество совпадений равно количеству элементов в многозначной ячейке.

0 голосов
/ 23 марта 2012

Что-то вроде этого. Но непроверенный

select col1, col2 from old_table 
left outer join (select col1, group_concat(col2 separator ',') as col2
            from new_table
            group by col1) as new_table 
on new_table.col1 = old_table.col1 and new_table.col2 = old_table.col2
...