Pb de requete

SithLord
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 10:20

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

JeanJeandu26
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 14:41

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

SithLord
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 15:25

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

SithLord
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 15:33

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

Petit nouveau ! | 6 Messages

28 mai 2006, 01:47

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.