0

1人につき2つの電話番号を持っています。電話のみが入力されているものもあれば、電話 2 のみが入力されているものもあれば、両方が入力されているものもあります。

電話 = 電話、電話 = 電話 2、電話 2 = 電話、電話 2 = 電話 2 のいずれかで、同じ電話番号を持つ他の人を見つけようとしています。

問題は、telephone1 がヌルの場合、既存のコードは、電話番号または電話番号 2 がヌルであるかどうかに関係なく、電話番号を持つ次の人に一致することです。コードに何を追加する必要がありますか。

    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);
            }
4

2 に答える 2

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
于 2012-07-02T12:04:54.240 に答える
0
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);
        }
于 2012-07-02T12:05:39.837 に答える