Всем привет.
Есть задача проверить две БД на совпадение данных, и если совпали исключить эти данные.
К пример есть две БД База 1 и База 2
в них таблицы staff. Так вот надо что бы исключались все записи которые имеют num 0 и имя уже есть в одной из баз. Если num 0 но имя только в одной базе то исключать не надо.
База 1
staff
id name num
1 Vasya 12
2 Petya 14
3 Oleg 0
4 Ira 8
5 Sveta 0
База 2
staff
id name num
1 Igor 16
2 Petya 0
3 Oleg 11
4 Lena 10
5 Garik 19
в этом примере надо исключить Petya, Oleg но не исключать Sveta
как такое лучше сделать?
(забыл добавить - можно хотя бы кол-во посчитать. например в таком варианте получиться в обеих БД по 4 записи)
Undertaker
18.10.2013 - 13:49
Ищи нули по базе и складывай записи в 2 матрицы (или одну, как понравиться), а далее если name[1]==name[2] и num[1]!=num[2] то удалить, после и значения посчитаешь
_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
Цитата (Undertaker @ 18.10.2013 - 09:49) |
Ищи нули по базе и складывай записи в 2 матрицы (или одну, как понравиться), а далее если name[1]==name[2] и num[1]!=num[2] то удалить, после и значения посчитаешь |
не совсем понял про матрицы
как примерно писать запрос что бы сравнивать две БД?
Игорь_Vasinsky
18.10.2013 - 14:09
2 бд или 2 таблицы?
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 18.10.2013 - 10:09) |
2 бд или 2 таблицы? |
именно 2 БД
Игорь_Vasinsky
18.10.2013 - 14:26
получить 2 ассоц массива, сравнить их, разницу забрать
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Цитата (Игорь_Vasinsky @ 18.10.2013 - 10:26) |
получить 2 ассоц массива, сравнить их, разницу забрать |
да. именно это мне надо сделать.
вопрос - как?
Undertaker
18.10.2013 - 15:02
Okulo
Цитата |
не совсем понял про матрицы sad.gif |
Нужен именно sql запрос? Тогда я теряюсь...
Не совсем правильно оформил мысль ты ишешь все значения где num = 0, и складываешь в матрицу
Далее ищешь одинаковые имена name
Если найдено то удалить значения из МАТРИЦЫ (там везде 0 если помнишь)
остальные значения считаешь (получаешь число), и удаляешь всё где name=
Например у тебя в массив попадут Petya, Oleg, Sveta и Sveta, ищем одинаковые строки В МАТРИЦЕ и удаляем, остаётся Petya и Oleg.
ищем в базе, если и с одной и со второй пришли записи, то удалить из базы, если нет то из матрицы, про посчитать не до понял, но думаю данных достаточно где посчитать
_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
Игорь_Vasinsky
18.10.2013 - 15:03
как, как очень просто. как получить данные из таблицы в ассоц массив?
составить запрос
проверить кол-во вернувшихся строк (чтоб >0)
while + mysql_fetch_assoc()
и так для каждой бд
потом
array_diff_assoc()
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
sergeiss
18.10.2013 - 15:52
Я бы так сделал...
1. Выгрузить данные из таблицы в БД1 в текстовый файл.
2. Загрузить текстовый файл во временную таблицу в БД2.
3. Сравнить искомую таблицу и временную таблицы в БД2, удалить определенные записи.
4. Удалить временную таблицу.
5. Для того, чтобы почистить таблицу в БД1, делаем всё то же самое: выгружаем таблицу из БД2 (в текстовый файл), загружаем данные во временную таблицу в БД1, сравниваем, удаляем записи, затем удаляем временную таблицу.
6. Наслаждаемся жизнью
Всё это можно сделать из одного ПХП-скрипта, который сам не будет ничего делать с данными, кроме как управлять работой БД и перекачиванием файлов. Естественно, надо иметь возможность заливать файлы на серверы, где установлены БД.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.