Visualizzare i duplicati

ivarello

Utente Attivo
14 Dic 2012
211
1
16
Ragazzi per trovare i duplicati faccio cosi:

PHP:
$query="select *, count(UserName) as conteggio 
FROM utenti 
GROUP BY UserName
HAVING conteggio > 1
ORDER BY id";
    $result = mysql_query($query) or die (mysql_error());    

	while ($row = mysql_fetch_assoc($result)) {
	$user   = htmlentities($row['UserName']);
        $pass   = htmlentities($row['Password']);
	echo "$user<br>";
        echo "$pass<br>";
	}
}

Ma cosi facendo ottengo il nome duplicato ovvero:

Marco - M4rc0

Invece vorrei vedere tutti e due i valori duplicati, ad esempio così:

Marco - M4rc0
Marco - C4n3

Come posso risolvere?
 
Avevo pensato di prendere tutti i nomi che si ripetono più di una volta e poi con un'altra query stampare tutti e solo i nomi ottenuti prima.
Potresti fare con le subquery ma devi per forza mettere COUNT nella select altrimenti avresti potuto fare:
Codice:
SELECT *
FROM tabella
WHERE nome IN (Query che restituisce i nomi)
 
Stavo pensando a un metodo per fare tutto con una query.
Potresti comunque prendere i nomi che ricavi da quella query che hai fatto tu e fare un'altra query che seleziona tutti e solo i record che contengono quei nomi.
 
Ho provato così:

PHP:
$sql="select UserName, count(UserName) as conteggio  
FROM utenti  
GROUP BY UserName 
HAVING conteggio > 1 
ORDER BY id"; 


$query = " SELECT *
FROM utenti
WHERE UserName IN ($sql)";


    $result = mysql_query($query) or die (mysql_error());     

    while ($row = mysql_fetch_assoc($result)) { 
    $user   = htmlentities($row['UserName']); 
    echo "$user<br>"; 
    } 
}

Ma non funziona cosa sbaglio ho anche provato a scriverci dentro dinuovo la query ma niente :S
 
No avresti potuto fare come hai scritto in $query solo se il risultato di $sql fosse un array contenente solo gli username. Allora esegui $select e:
PHP:
$sql="...";
$result = mysql_query($sql) or die (mysql_error());      
$ris = mysql_fetch_array($result);
$users = implode(",", $ris['UserName']);
//ora $users contiene gli username
$query="SELECT *
FROM utenti
WHERE UserName IN ($users)";
 
Io invece non credo sia l'unica ma la prima che mi è venuta in mente :)
 

Discussioni simili