Nur doppelte Einträge ausgeben

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Nur doppelte Einträge ausgeben

    Hi,

    um Fehler in der datenbank zu überprüfen, bräuchte ich eine Abfrage, die mir nur die doppelten Einträge ausgibt (wenn doppelt dann nämlich falsch).
    Mit destinct kann ich VERHINDERN das doppelte Einträge angezeigt werden, aber wie kann ich NUR die doppelten Einträge anzeigen lassen?
    Ich meine, ich könnte ja theoretisch die Einträge in einem mysql_fetch_array speichern und dann in der while-schleife nachgucken, ob der jeweilige Eintrag nochmal vorhanden ist, bei allerdings über tausend werten die verglichen werden müssen dauert das zu lange und geschickt ist das ganze garantiert auch nicht, oder?

  • #2
    versuchs mal mit group by und having

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      probier mal

      SELECT daten FROM tabelle AS one, tabelle AS two WHERE one.feld = two.feld AND [weitere bedingungen]

      CAT Music Files

      Kommentar


      • #4
        Also wie das mit group by und having funktionieren soll versteh ich gar nicht.

        Und was die zweite Variante angeht, ich habe es also so geschrieben:

        $q = mysql_query ("SELECT name FROM user AS one, user AS two WHERE one.mail = two.mail;");
        while(list($name) = mysql_fetch_array($q)){
        echo "$name kontrollieren!!!<br>";
        }

        (mail ist das Feld in dem die Mail-Adresse gespeichert ist)
        Und bekomme dann die Fehlermeldung

        Warning: Supplied argument is not a valid MySQL result resource in /absoluter/Pfad/zu/update.php on line 19

        Line 19 ist die while-Anweisung.
        Hab ich nen fehler gemacht, oder geht das einfach nur nicht???

        Kommentar


        • #5
          Das sagt nicht viel.. Mach mal:

          $q = mysql_query ("SELECT name FROM user AS one, user AS two WHERE one.mail = two.mail;") or die(mysql_error());

          CAT Music Files

          Kommentar


          • #6
            Hat sich schon erledigt

            Es muß so heißen: (Fehlte das one. vor dem name)
            $q = mysql_query ("SELECT one.name FROM user AS one, user AS two WHERE one.mail = two.mail;");
            while(list($name) = mysql_fetch_array($q)){
            echo "$name kontrollieren!!!<br>";
            }


            Danke Dir!!!!!!

            [Editiert von Wannabe am 16-12-2001 um 17:33]

            Kommentar


            • #7
              Mein Fehler, sorry...

              Damit sollte es übrigens effizienter sein:

              SELECT one.name FROM user AS one JOIN user AS two ON one.mail = two.mail

              CAT Music Files

              Kommentar

              Lädt...
              X