Page 1 sur 1

Extraire les lignes quand des champs sont communs

Posté : 04 janv. 2007, 23:10
par neo765
Bonjour,

Dans ma base de données j'enregistre l'ip des membres

Je souhaiterai extraire les lignes où les ip sont communes vous voir ceux qui utilisent des multicompte.

Merci

Posté : 04 janv. 2007, 23:14
par fab
utilises GROUP BY sur le champ contenant les ips

Posté : 04 janv. 2007, 23:15
par Ajoloca
Bonsoir,

QQ chose du style (pas testé)
SELECT ip, user, count(ip) AS nbr FROM user_tbl GROUP BY ip HAVING nbr > 1;

Posté : 05 janv. 2007, 01:32
par neo765
En faite j'ai trouvé comment faire sans utiliser de fonction spécial :
$ipsel1_sql = "SELECT ip, login FROM membres";
$ipsel1 = mysql_query($ipsel1_sql);
while ($row = mysql_fetch_assoc($ipsel1)) {
$ip = $row["ip"];
$login = $row["login"];
//--
if ($ip==TRUE)
{
$ipsel2_sql = "SELECT ip, login FROM membres WHERE (ip='$ip') AND (login!='$login')";
$ipsel2 = mysql_query($ipsel2_sql);
while ($row = mysql_fetch_assoc($ipsel2)) {
$var_login2 = $row["login"];
$var_ip2 = $row["ip"];
echo "$var_login2 --> $var_ip2<br>";
}
mysql_free_result($ipsel2);
}
//--
}
mysql_free_result($ipsel1);

Posté : 05 janv. 2007, 02:32
par fab
C'est vrai tu peux aussi faire comme ça mais regarde un peu le nombre de requete sql que tu es obligé de faire pour obtenir le même résultat!
Derriere notre réponse il y un aspect de performance ou du moins d'optimisation

Posté : 05 janv. 2007, 03:15
par neo765
C'est important d'optimiser le nombre de requete sql ??

Posté : 05 janv. 2007, 11:40
par tinou
pour des petites requetes comme celle-la non (sauf si tu as beacoup de membres) mais cela permet surtout de ne pas encombrer ton serveur et le saturer

Posté : 05 janv. 2007, 18:06
par neo765
En suivant vos conseils j'ai utilisé la fonction GROUP BY
$ipsel1_sql = "SELECT ip, count(ip) AS nbr FROM membres GROUP BY ip HAVING nbr > 1";
$ipsel1 = mysql_query($ipsel1_sql);
while ($row = mysql_fetch_assoc($ipsel1)) {
$ip = $row["ip"];
//--
//--
if ($ip==TRUE)
{
$ipsel2_sql = "SELECT login FROM membres WHERE ip='$ip'";
$ipsel2 = mysql_query($ipsel2_sql);
while ($row = mysql_fetch_assoc($ipsel2)) {
$login = $row["login"];
//--
echo "$login --> $ip<br>";
}
mysql_free_result($ipsel2);
}
}
mysql_free_result($ipsel1);