[résolu]Mysql et doublon

WRInaute occasionnel
Salut,

Juste une ptit' question sur mysql... ben oui parfois j'ai du mal à reflechir...

bref, je veux avoir tous les resultats lorsqu'un enregistrement dans un champ est identique à un autre...
En fait j'ai un champs 'lien' dans ma table, je veux tous les resultats dès lors que l'enregistrement dans le champs 'lien' est identique à un autre...

J'explique encore un peu, meme moi je ne comprends rien :

j'ai des doublon dans mon champs 'lien'. je veux les selectionner!!!!

Une idée ?

Merci
Olivier
 
Nouveau WRInaute
Bonjour,

Je ne sais pas si ça marche avec mySQL mais ça marche sur la plupart des SGBD:
Code:
select champ1, count(*) as nb from matable
group by champ1
having nb > 1

Cordialement,
 
WRInaute occasionnel
un truc dans le genre :

Code:
$select = "select lien,count(*) AS Number from ta_table group by lien having Number > 1 ORDER BY Number desc;";
$query = mysql_query($select);
while ($row = mysql_fetch_array($query)) {
	echo $row[lien].' => '.$row[Number].' fois<br>';
}

devrait afficher :
lien1 => 4 fois
lien2 => 2 fois
etc.
(pour tous les liens qui apparaissent plus d'une fois)
 
WRInaute occasionnel
en fait ca serait plutot du style :

Code:
select * from table where count(lien)>1

Mais ca, ca ne marche pas. le truc c'est que je ne veux pas grouper les resultats
 
Nouveau WRInaute
Essaye ça:
Code:
select * from table a,
(select lien, count(*) as nb from table group by lien having nb > 1) b
where a.lien = b.lien
mais je ne sais pas si ça marche sous mySQL.

Sinon, tu n'as pas d'autre solution que grouper car count est une fonction de groupe.
 
WRInaute occasionnel
Et ça ?

Code:
select * from matable where champ1 in (
select champ1 from matable 
group by champ1 
having count(*) > 1)

Ca marche peut-être si ta version de mysql est au moins 4.1 je crois

EDIT: sinon je crains qu'il ne soit pas possible de le faire en une seule fois => passer par une table temp
 
WRInaute occasionnel
Merci samgaz !!

Ca marche... un peu long car y a beaucoup d'enregistrements, mais c'est exactement ce que je voulais!


Bon demain, je me met au subselect !!!!

(PS : les autres soluces ne fonctionnnaient pas)
 
WRInaute occasionnel
chava2b a dit:
Ca marche... un peu long car y a beaucoup d'enregistrements
Tu as un index sur champ1 ? Ca devrait améliorer grandement la vitesse (sauf si champ1 a globalement peu de valeurs différentes dans la table)

chava2b a dit:
(PS : les autres soluces ne fonctionnnaient pas)
Même celle de cyberdesign 8O ?
 
WRInaute occasionnel
Index : pas besoin, c'est juste pour cette fois, histoire de virer tous les doublons manuellement car c'est en fonction d'autres champs...

PS: Bravo aussi a cyberdesign, j'ai du me louper en recopiant car ca marche aussi!
 
Discussions similaires
Haut