sql >> データベース >  >> RDS >> Mysql

同じリストにあるメールを見つける方法は?

    コミュニティが重複した重複したメールアドレスを表示する方法を閉じることに投票したため、

    これは、必要に応じて11まで拡張できる4つのテーブルの例です。申し訳ありませんが、私はこのコードをデバッグしませんでした。主な障害は、データベースから正しい値を取得するためのmysqlクエリであったと思います。

    そして、あなたは間違いなく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>';
    

    更新 同じクエリを使用しますが、出力部分を次のように変更します。

    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>';
    


    1. パーティションごとの結合のための高度なパーティションマッチング

    2. ORDER BY句は、ビュー、インライン関数、派生テーブル、サブクエリ、および一般的なテーブル式では無効です。

    3. ユーザーがテキストボックスに何も入力しない場合、テーブルは空のスペースを更新します

    4. カンマ区切りリストMySQLのアイテムをカウントする方法