/ consulta mySQL - problema matemático simples - php, mysql, pdo

consulta mySQL - problema matemático simples - php, mysql, pdo

Eu tenho 2 números de telefone para cada pessoa. Alguns deles só têm telefone preenchido em outros só tem telefone2 preenchido e alguns têm ambos.

Estou tentando encontrar outras pessoas com o mesmo número de telefone, telefone = telefone, telefone = telefone2, telefone2 = telefone, telefone2 = telefone2

O problema é que se telephone1 é nulo e então meuO código existente irá combiná-lo com a próxima pessoa com um número de telefone, independentemente da correspondência, se tiver telefone ou telefone2 nulo. O que eu preciso adicionar ao código.

    function getothers($tid,$criteria,$telephone,$telephone2,$elector){
global $dbh;
$tid = "-TID".$tid;
$sql = "SELECT * FROM electors
WHERE (telephone > 0 OR telephone2 > 0)
AND records NOT RLIKE "$tid"
AND (telephone IN ("$telephone","$telephone2")
OR telephone2 IN ("$telephone","$telephone2"))
AND ID != "$elector"  LIMIT 10";
return $dbh->query($sql);
}

Respostas:

1 para resposta № 1
SELECT T_el.*
FROM (electors AS T_el) LEFT JOIN (electors AS T_dup)
ON (T_el.ID!=T_dup.ID
AND (
(T_el.telephone IS NOT NULL AND (T_el.telephone=T_dup.telephone OR T_el.telephone=T_dup.telephone2))
OR
(T_el.telephone2 IS NOT NULL AND (T_el.telephone2=T_dup.telephone OR T_el.telephone2=T_dup.telephone2))
)
)
WHERE T_dup.ID IS NOT NULL
GROUP BY T_el.ID

0 para resposta № 2
function getothers($tid,$criteria,$telephone,$telephone2,$elector){
global $dbh;
$tid = "-TID".$tid;
$sql = "SELECT * FROM electors WHERE (telephone > 0 AND telephone IN ("$telephone","$telephone2"))  OR (telephone2 > 0 AND telephone2 IN ("$telephone","$telephone2")) $criteria AND records NOT RLIKE "$tid" AND ID != "$elector"  LIMIT 10";
return $dbh->query($sql);
}