Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Nur doppelte Einträge ausgeben [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Nur doppelte Einträge ausgeben


 
Wannabe
15-12-2001, 14:40 
 
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?

 
Berni
15-12-2001, 16:36 
 
versuchs mal mit group by und having

 
Sky
15-12-2001, 21:56 
 
probier mal

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

 
Wannabe
16-12-2001, 17:17 
 
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???

 
Sky
16-12-2001, 17:21 
 
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());

 
Wannabe
16-12-2001, 17:28 
 
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]

 
Sky
17-12-2001, 11:00 
 
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

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:44 Uhr.