Page 1 sur 1

Pb de requete

Posté : 23 mai 2006, 10:20
par SithLord
Bonjour,

je vien de terminer un script qui enregistre moult fichier dans une base MySQL.

Je souhaite recherché et afficher les doublons. Je n'arrive qu'as afficher les fichiers qui ont un nom qui se repete plusieurs fois. Je trouve des doublons de nom, seulement.

Il faudrai que je puisse trouvait des doublons qui on la même taille, la même derniere date de modification et le même nom.

Code : Tout sélectionner

SELECT NomFich, count( NomFich ) , DirFich FROM FILE GROUP BY NomFich HAVING count( NomFich ) >1 AND count( DateFich ) >1 AND count( SizeFich ) >1
Voila ma requete.
Elle en me retourne qu'un repertoire pour des fichiers que j'ai en double. Donc qui sont dans deux repertoires. De plus elle ne me retourne que les doublons de noms...

I need help

Posté : 23 mai 2006, 14:41
par JeanJeandu26
Garde juste ca, ensuite tu pourras afficher les repertoire et la taille des fichiers, cela n'est qu'un debut et te permettra ensuite de comparer a l'oeil les fichiers qui ont la même taille.
Pour la requete il faut attendre qu'un membre plus aguerri que moi tel a donne :wink:

Code : Tout sélectionner

SELECT NomFich, count( NomFich ) , DirFich FROM FILE GROUP BY NomFich HAVING count( NomFich ) >1

Posté : 23 mai 2006, 15:25
par SithLord
OK, merci pour le conseil, je l'ai implementé, et on affiche que les fichiers qui on la même taille.

Mais on ne pourrait pas inclure ce filtre directement dans la requete ?

Merci

Posté : 23 mai 2006, 15:33
par SithLord
Désolé j'ai oublier de poster la requete :

Code : Tout sélectionner

"SELECT `NomFich`,`DirFich`,`DateFich`,`SizeFich` FROM FILE GROUP BY `NomFich` HAVING count(`NomFich`)>1"
Ceci me retourne les fichiers qui on le même nom. Je souhaite que cette requete retourne les fichiers (ainsi que leur repertoire respectif) qui on le même nom et la même taille.

Merki

Posté : 28 mai 2006, 01:47
par barbux
Je comprend pas bien ce que tu cherche a faire, ca doit etre l'heure tardive.

Mais je remarque un chose dans ta requète :
si tu "GROUP BY `NomFich`", count(`NomFich`) sera toujours égale à 1, a quoi sert ta clause HAVING ?

Pour retourner les fichiers qui on le même nom et la même taille peut être que :
SELECT NomFich, SizeFich, count(*) AS nbFich
    FROM FILE
    GROUP BY NomFich, SizeFich
    HAVING nbFich = '1'
par contre comme ca tu ne peux pas recupérer DirFich et DateFich parcequ'il peut y en avoir plusieurs différents dans la même ligne de resultat.

Peut-etre que faire une deuxieme requete pour lister les repertoire et date des fichiers serait la solution.