SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.06.2017 08:40:45

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Как сравнить две таблицы ?

Имеется
Таблица 1 - редактируемая
Таблица 2 - шаблон

Сценарий
В процессе работы программы таблица "Таблица 1" подвергается редактированию.
Редактирование может заключаться в следующем:
- количество записей равно нулю (т.е. таблица пуста);
- количество записей больше чем в "Таблица 2";
- количество записей меньше чем в "Таблица 2";
- содержание записей отличается от "Таблица 2";

Количество и наименование столбцов всегда одинаково в обеих таблицах.

Вопрос
Как отследить несоответствия в "Таблица 1" по отношению к "Таблица 2"?
Состав несоответствий:
- 1. количество записей равно нулю (т.е. таблица пуста);
- 2. количество записей больше чем в "Таблица 2";
В результате вывести лишние записи таблицы "Таблица 1"
- 3. количество записей меньше чем в "Таблица 2";
В результате вывести записи которые есть в "Таблица 2", но отсутствуют в "Таблица 1"

- 4. содержание записей (одна, несколько, все) отличается от записей "Таблица 2";

Таблицы

Таблица 1 (редактир)
+--------+--------------------+--------------------+-------------------+
| ID_ТБЛ| pole_1 | pole_2 | pole_3 |
+--------+--------------------+--------------------+-------------------+
| 1 | pole_1_запись_1 | pole_2_запись_1 | pole_3_запись_1 |
| 2 | pole_1_запись_2 | pole_2_запись_2 | pole_3_запись_2 |
| 3 | pole_1_запись_3 | pole_2_запись_3 | pole_3_запись_3 |
+---------+-------------------+--------------------+--------------------+

Таблица 2 (ШБЛ)
+--------+-----------------+-----------------+-----------------+
| ID_ТБЛ | pole_1 | pole_2 | pole_3 |
+--------+-----------------+-----------------+-----------------+
| 1 | pole_1_запись_1 | pole_2_запись_1 | pole_3_запись_1 |
| 2 | pole_1_запись_2 | pole_2_запись_2 | pole_3_запись_2 |
| 3 | pole_1_запись_3 | pole_2_запись_3 | pole_3_запись_3 |
+--------+-----------------+-----------------+-----------------+

Отредактированно sql157 (02.06.2017 12:31:42)

Неактивен

 

#2 02.06.2017 11:26:59

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Как сравнить две таблицы ?

select count(*) from `Таблица ` -- кол-во записей

select count(*) `Таблица 1` left join `Таблица 2` t2 using(ID_ТБЛ, pole_1, pole_2, pole_3) where t2.ID_ТБЛ is null or t2.pole_1 is null or ... -- кол-во отличающихся записей

Неактивен

 

#3 02.06.2017 12:32:51

sql157
Завсегдатай
Зарегистрирован: 17.03.2016
Сообщений: 97

Re: Как сравнить две таблицы ?

vasya написал:

select count(*) from `Таблица ` -- кол-во записей

select count(*) `Таблица 1` left join `Таблица 2` t2 using(ID_ТБЛ, pole_1, pole_2, pole_3) where t2.ID_ТБЛ is null or t2.pole_1 is null or ... -- кол-во отличающихся записей

Немного не корректно сформулировал вопрос...
Скорректировал.
Привожу корректировку вопроса.
- 2. количество записей больше чем в "Таблица 2";
В результате вывести лишние записи таблицы "Таблица 1"
- 3. количество записей меньше чем в "Таблица 2";
В результате вывести записи которые есть в "Таблица 2", но отсутствуют в "Таблица 1"

Неактивен

 

#4 02.06.2017 12:37:37

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5829

Re: Как сравнить две таблицы ?

left join .. is null

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson