Metallica
26-02-2002, 13:17
Hi Leute/$schmalle!
wie kann ich in meiner DB überprüfen, ob in einer spalte zweimal (ggf. auch öfter) der gleiche wert steht??
hab jetzt schon alles probiert. haut nicht hin (siehe kommentar)
SCRIPT-Auszug:
$samevalue = mysql_query("SELECT VALUEitc, IDitc FROM tabelle WHERE VAULUEitc LIKE VALUEitc"); //da hat's was
$anzvalue = mysql_num_rows($samevalue);
if($anzvalue == 0) { echo "Keine Übereinstimmung gefunden!"; }
if($anzvalue >= 1) {
while ($id2 = mysql_fetch_array($card)) {
$id = $id2["IDitc"];
echo "Übereinstimmung gefunden! Datensatznummer: $id <br>";
} //while
} //end if
schmalle
26-02-2002, 13:25
:)
1. wie kann man seinen tabellen solche derart bescheurten namen geben? da blickt doch keiner durch :)
2. ist VALUEitc jetzt eine spalte oder ein wert oder was oder wie?
wenn es eine spalte ist, kann das ja so nicht gehen ...
Metallica
26-02-2002, 13:32
ahhh, ich kann doch nix dafür. die namen hab ich nicht vergeben. is nich mein pfusch.
VALUEitc ist auf jeden fall eine SPALTE.
was ich erreichen will:
alle DS in der DB sollen durchlaufen werden und es soll dabei überprüft werden ob in Spalte VALUEitc irgendwo ein wert doppelt vorkommt.
zB:
VALUEitc
1Zeile: 345
2Zeile: 678
3Zeile: 890
4Zeile: 345
zeile 1 und 4 haben den gleichen wert => echoausgabe von php (siehe script)
KONKRET:
ich will wissen was an dem befehl für den vergleich nicht paßt:
mysql_query("SELECT VALUEitc, IDitc FROM tabelle");
=> nach tabelle müßte noch die WHERE-Klausel kommen. nur wie sieht die aus??
[Editiert von Metallica am 26-02-2002 um 15:17]
$query = select distinct VALUEitc, count(*) as ANZAHL from tabelle group by VALUEitc having ANZAHL>1
$q = mysql_query($query) or die ("$query: ".mysql_error());
while ($r = mysql_fetch_row($q))
echo "VALUEitc '$r[0]' ist $r[1] mal vorhanden<br>\n";
Metallica
04-03-2002, 13:40
danke Titus, funtzt perfectly :)
ein anliegen hätt ich da aber noch:
wenn 2 gleiche DS vorhanden sind, wäre es sehr praktisch wenn mir php noch die ID dazu ausgeben könnte damit ich nicht die ganze tabelle manuell durchsuchen muss.
hab dazu den select-befehl erweitert => funtzt aber nicht.
$query = "select distinct IDitc, VALUEitc, count(*) as ANZAHL from tabelle group by VALUEitc having ANZAHL>1";
$q = mysql_query($query) or die ("$query: ".mysql_error());
while ($r = mysql_fetch_row($q))
echo "IDitc, VALUEitc '$r[0]' ist $r[1] mal vorhanden<br>\n";
???
nope, klappt so nicht.
die IDs mußt du in einer zusätzlichen Schleife abfragen. Aber das geht ja ganz einfach:
$query = select distinct VALUEitc, count(*) as ANZAHL from tabelle group by VALUEitc having ANZAHL>1
$q = mysql_query($query) or die ("$query: ".mysql_error());
while ($r = mysql_fetch_row($q))
{
$q2 = mysql_query ("select IDitc from tabelle
where VALUEitc='$r[0]'");
$ids = array();
while (list($id) = mysql_fetch_row($q2))
$ids[] = $id;
echo "VALUEitc '$r[0]' $r[1] mal: IDs ",
implode(', ', $ids), "<br>\n";
}
Metallica
05-03-2002, 08:47
yoooooooooooooo:):)
supi. funtzt perfectly.
THHHHHHHHXXXXXXXXXSSSSSSSSS