php - mail - ¿Cómo encontrar qué correos electrónicos están en las mismas listas?
enviar formulario a correo php (3)
El operador de MySQL UNION le permite combinar dos o más conjuntos de resultados de varias tablas en un solo conjunto de resultados
SELECT Contact_Email FROM email1
UNION
SELECT Contact_Email FROM email2
UNION
SELECT Contact_Email FROM email3
.
.
UNION
SELECT Contact_Email FROM email11
De manera predeterminada, el operador de UNION elimina las filas duplicadas del resultado, incluso si no utiliza explícitamente el operador DISTINCT.
Tengo 11 tablas [email1, email2, email3, ... email11]
<?php
$con = mysql_connect("localhost", "root", "");
$db = mysql_select_db("email-db", $con);
$sql = "SELECT Contact_Email FROM email1, email2, email3, email4, email5";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
?>
<tr>
<td><? echo $row[''Contact_Email'']; ?></td>
<td><? echo ''<br>''; ?></td>
</tr>
<? } ?>
Lo que realmente quiero hacer es seleccionar todos los correos electrónicos de todas las tablas usando join en todos ellos. ¿Cómo puede hacerse esto?
$sql = "SELECT Contact_Email FROM email1 UNION ALL SELECT Contact_Email FROM email2 UNION ALL SELECT Contact_Email FROM email3 UNION ALL SELECT Contact_Email FROM email4 UNION ALL SELECT Contact_Email FROM email5 UNION ALL SELECT Contact_Email FROM email6 UNION ALL SELECT Contact_Email FROM email7 UNION ALL SELECT Contact_Email FROM email8 UNION ALL SELECT Contact_Email FROM email9 UNION ALL SELECT Contact_Email FROM email10 UNION ALL SELECT Contact_Email FROM email11";
usé esto
Dado que la sociedad votó para cerrar duplicar la forma de mostrar la dirección de correo electrónico duplicado
Aquí hay un ejemplo para 4 tablas que puede ampliar hasta 11 si lo necesita. Lo siento, pero no depuré este código, supongo que el principal obstáculo fue la consulta mysql para obtener los valores correctos de la base de datos.
¡Y definitivamente debes dejar de usar las funciones de mysql *!
$sql ="SELECT t.Contact_Email,
e1.Contact_Email email1,
e2.Contact_Email email2,
e3.Contact_Email email3,
e4.Contact_Email email4
FROM (
SELECT e.Contact_Email FROM email1 e
UNION ALL
SELECT e.Contact_Email FROM email2 e
UNION ALL
SELECT e.Contact_Email FROM email3 e
UNION ALL
SELECT e.Contact_Email FROM email4 e
) t
LEFT JOIN email1 e1
ON t.Contact_Email = e1.Contact_Email
LEFT JOIN email2 e2
ON t.Contact_Email = e2.Contact_Email
LEFT JOIN email3 e3
ON t.Contact_Email = e3.Contact_Email
LEFT JOIN email4 e4
ON t.Contact_Email = e4.Contact_Email";
echo ''<table><thead><tr><th>Email</th>'';
for ($i=1;$i<5; $i++){
echo "<th>email $i</th>";
}
echo ''</tr></thead><tbody>'';
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
echo ''<tr><td>''.$row[''Contact_Email''].''</td>'';
for ($i=1;$i<5; $i++){
echo ''<td>''.(empty($row[''email''.$i])?''no'':''yes'').''</td>'';
}
echo ''</tr>'';
}
echo ''</tbody></table>'';
ACTUALIZACIÓN Utilice la misma consulta pero cambie la parte de salida a:
echo ''<table><thead><tr><th>Email</th>'';
for ($i=1;$i<5; $i++){
echo "<th>email $i</th>";
}
echo "<th>Total (yes)</th>";
echo "<th>Total (no)</th>";
echo ''</tr></thead><tbody>'';
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
$yesCount = 0;
$noCount = 0;
echo ''<tr><td>''.$row[''Contact_Email''].''</td>'';
for ($i=1;$i<5; $i++){
echo ''<td>''.(empty($row[''email''.$i])?''no'':''yes'').''</td>'';
if (empty($row[''email''.$i])) {
$noCount++;
} else {
$yesCount++;
}
}
echo ''<th>''.$yesCount.''</th>'';
echo ''<th>''.$noCount.''</th>'';
echo ''</tr>'';
}
echo ''</tbody></table>'';