|
|
|
| есть две таблицы с email. Необходимо сделать расслылку по email с обеих таблиц, чтоб адреса не повторялись.
1) Делаю объединение с помощью mysql: (SELECT Email, OptSD from users) union (select Email, OptSD from subscr) - 8475 строк (в users - 3993, в subscr - SELECT count(DISTINCT Email )
FROM subscr - 7440)
2) делаю объединение через php:
if ($_POST['user']==1 || $_POST['user']==2)
{
$db->Query('SELECT Email FROM users');
while ($db->NextRecord())
{
$arr[] = trim(strtolower($db->F('Email')));
$ucount++;
}
}
//3993 записи
if ($_POST['user']==1 || $_POST['user']==3)
{
$db->Query('SELECT Email FROM subscr');
while ($db->NextRecord())
{
$arr[] = trim(strtolower($db->F('Email')));
$ucount++;
}
}
//7440 записей
$result=array_unique($arr);
natcasesort($result);
echo count($result)."<br>";
print_r ($result); //8453 записи
|
| |
|
|
|
|
|
|
|
для: P@Sol
(14.06.2012 в 19:49)
| | Вопрос-то в чём? | |
|
|
|
|
|
|
|
для: Desh
(14.06.2012 в 19:59)
| | вопрос в том что итогово в 1 случае 8475, а во втором - 8453 строки (при том что по отдельности кол-во в каждой таблице в обоих вариантах одинаковое). кто прав? я подозреваю, что второй. Можно ли как то в 1-случае добиться того же? | |
|
|
|
|
|
|
|
для: P@Sol
(14.06.2012 в 23:06)
| | Ну это надо тестировать уже конкретно в Вашем случае. Может разница из-за того, что в Email-ы записаны в разных регистрах и если в Вашем PHP-коде все результаты приводятся к нижнему регистру, то в SQL-запросе это не так. Попробуйте в SELECT значения Email приводить в нижний регистр тоже.
Если не поможет, то попробуем подумать ещё. Хотя вслепую это маловероятно;) | |
|
|
|
|
|
|
|
для: P@Sol
(14.06.2012 в 19:49)
| | Вопрос-то в чём? | |
|
|
|