[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбор и сортировка двух БД
Okulo
Всем привет.
Есть задача проверить две БД на совпадение данных, и если совпали исключить эти данные.
К пример есть две БД База 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
Ищи нули по базе и складывай записи в 2 матрицы (или одну, как понравиться), а далее если name[1]==name[2] и num[1]!=num[2] то удалить, после и значения посчитаешь

_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
Okulo
Цитата (Undertaker @ 18.10.2013 - 09:49)
Ищи нули по базе и складывай записи в 2 матрицы (или одну, как понравиться), а далее если name[1]==name[2] и num[1]!=num[2] то удалить, после и значения посчитаешь

не совсем понял про матрицы sad.gif
как примерно писать запрос что бы сравнивать две БД?
Игорь_Vasinsky
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
Okulo
Цитата (Игорь_Vasinsky @ 18.10.2013 - 10:09)
2 бд или 2 таблицы?

именно 2 БД
Игорь_Vasinsky
получить 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
Okulo
Цитата (Игорь_Vasinsky @ 18.10.2013 - 10:26)
получить 2 ассоц массива, сравнить их, разницу забрать

да. именно это мне надо сделать.
вопрос - как?
Undertaker
Okulo
Цитата
не совсем понял про матрицы sad.gif

Нужен именно sql запрос? Тогда я теряюсь...
Не совсем правильно оформил мысль ты ишешь все значения где num = 0, и складываешь в матрицу
Далее ищешь одинаковые имена name
Если найдено то удалить значения из МАТРИЦЫ (там везде 0 если помнишь)
остальные значения считаешь (получаешь число), и удаляешь всё где name=
Например у тебя в массив попадут Petya, Oleg, Sveta и Sveta, ищем одинаковые строки В МАТРИЦЕ и удаляем, остаётся Petya и Oleg.
ищем в базе, если и с одной и со второй пришли записи, то удалить из базы, если нет то из матрицы, про посчитать не до понял, но думаю данных достаточно где посчитать

_____________
Из отчета службы безопасности:
... по поводу взлома китайцами сервера Пентагона:
1) Каждый китаец попробовал один пароль.
2) Каждый второй пароль был - maodzedun.
3) На 657983241-й попытке сервер согласился что у него пароль - maodzedun
Игорь_Vasinsky
как, как очень просто. как получить данные из таблицы в ассоц массив?

составить запрос
проверить кол-во вернувшихся строк (чтоб >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
Я бы так сделал...

1. Выгрузить данные из таблицы в БД1 в текстовый файл.
2. Загрузить текстовый файл во временную таблицу в БД2.
3. Сравнить искомую таблицу и временную таблицы в БД2, удалить определенные записи.
4. Удалить временную таблицу.
5. Для того, чтобы почистить таблицу в БД1, делаем всё то же самое: выгружаем таблицу из БД2 (в текстовый файл), загружаем данные во временную таблицу в БД1, сравниваем, удаляем записи, затем удаляем временную таблицу.
6. Наслаждаемся жизнью smile.gif

Всё это можно сделать из одного ПХП-скрипта, который сам не будет ничего делать с данными, кроме как управлять работой БД и перекачиванием файлов. Естественно, надо иметь возможность заливать файлы на серверы, где установлены БД.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.