[MySql] Detecter des doublons.

Detecter des doublons. [MySql] - SQL/NoSQL - Programmation

Marsh Posté le 05-05-2005 à 11:31:42    

Bonjour,
 
J'aimerais savoir lesquels des enregistrements de ma table membres possède des ips commun, tels des multi comptes.
 
Je pensais un peu a quelque chose du style:
 
SELECT m1.pseudo, m1.ip FROM membre AS m1
UNION SELECT m2.pseudo, m2.ip FROM membre AS m2
WHERE m1.id!=m2.id AND m1.ip=m2.ip
 
Mais cela ne marche pas.
 
=> Unknown table 'm1' in where clause
 
Merci d'avance.

Reply

Marsh Posté le 05-05-2005 à 11:31:42   

Reply

Marsh Posté le 05-05-2005 à 11:37:04    

IP comme dans adresse IP ?
 
Ca ne marche pas car ta clause where ne porte que sur le 2è SELECT, pas sur le premier. Ce ne sont pas deux SELECTs imbriqués, mais deux distincts.
 
Tu peux essayer une auto-jointure, par exemple (à adapter bien entendu) :
SELECT m1.id
FROM membre m1, membre 2
WHERE m1.id < m2.id
AND m1.ip = m2.ip
 
Ou plus intuitif, une clause EXISTS, dans le genre:
 
SELECT m1.pseudo, m1.ip
FROM membre m1
WHERE EXISTS (
    SELECT m2.id
    FROM membre m2
    WHERE m1.ip = m2.ip
    AND m1.id <> m2.id
)
 
A adapter, fais à l'arrachée, sans vérifier, hein!


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 05-05-2005 à 11:43:55    

Code :
  1. SELECT m1.pseudo, m1.ip
  2. FROM membre AS m1
  3. GROUP BY m1.pseudo
  4. HAVING COUNT(m1.ip) > 1


 
?


---------------
[:whatde]
Reply

Marsh Posté le 05-05-2005 à 11:53:49    

[:klem3i1] Tu vas l'achever.


Message édité par sircam le 05-05-2005 à 11:54:17

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 05-05-2005 à 12:24:41    

Tiens je croyais que cela ne marchait pas ce genre de truc en MySQL mais apparament si. (je parle pour les requetes imbriques)
 
Merci beaucoup.


Message édité par smilm le 05-05-2005 à 12:25:36
Reply

Marsh Posté le 05-05-2005 à 12:25:21    

sircam a écrit :

[:klem3i1] Tu vas l'achever.


Non non, c'est ok :)
 
Edit:
C'est ok sauf que cela ne renvoi aucun résultat.


Message édité par smilm le 05-05-2005 à 12:28:06
Reply

Marsh Posté le 08-05-2005 à 20:56:09    

C'est parce qu'il faut faire le contraire, regarder les doublons sur les ip.
 

Code :
  1. SELECT m1.ip, COUNT(*)
  2. FROM membre AS m1
  3. GROUP BY m1.ip
  4. HAVING COUNT(*) > 1;

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed