Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2011, 15h40   #1
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
Par défaut Requête avec Distinct

bonjour,

je cherche à afficher sous forme de liste la dernière version de fichiers.

Ces fichiers ont des versions différente VersNumero incrémenté automatiquement et FichierId commun.

Code :
1
2
3
4
5
6
Textes complets 	VersionId 	FichierId 	VersNumero 	VersFichier
	Modifier 	Effacer 	65 	40 	1 	documents/Repertoire9/Document1.pdf
	Modifier 	Effacer 	66 	41 	1 	documents/Repertoire9/Document2.pdf
	Modifier 	Effacer 	67 	42 	1 	documents/Repertoire8/test.pdf
	Modifier 	Effacer 	68 	43 	1 	documents/Repertoire0/entreprises-20110113-27.csv
	Modifier 	Effacer 	69 	43 	2 	documents/Repertoire9/entreprises-20110113-30.xlsx
Code :
1
2
3
4
$sql="SELECT * FROM FichierVersion as t1 INNER JOIN Fichier as t2 ON t1.FichierId=t2.FichierId
		LEFT JOIN Repertoire as t3 ON t3.RepertoireId=t2.RepertoireId
		LEFT JOIN RepertoireGroupe as t4 ON t4.RepertoireId=t3.RepertoireId 
		LEFT JOIN GroupeMembre as t5 ON t5.GroupeId=t4.GroupeId";
Il faudrait que je fasse une requete avec un disctinct mais dans ce cas, il ne me donne que le champ du distinct, comment obtenir également les données des jointures.

A noter que MySQL est en 4.1, dont les requêtes imbriquées sont impossibles, merci pour votre aide.
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 16h31   #2
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Je propose un group by sur le FichierId et un order ASC

Ce qui donne un truc du genre:

Code :
1
2
3
4
5
 
SELECT FichierId, VersNumero
FROM ...
GROUP BY FichierId
ORDER BY VersNumero
Sans requête imbriqué c'est un peu difficile là
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 16h43   #3
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
La solution du Group By ne me convient pas car elle écrase la clause order by et en conséquence, je récupère la liste des fichiers en Version 1 alors que je recherche la dernière version du fichier.

C'est pourquoi j'opterais davantage sur un distinct.
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h00   #4
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
La solution du Group By ne me convient pas car elle écrase la clause order by et en conséquence, je récupère la liste des fichiers en Version 1 alors que je recherche la dernière version du fichier.
Pas faux

Citation:
C'est pourquoi j'opterais davantage sur un distinct.
Le distinct ne fait que enlever les doublons
Dans l'exemple qui suit le distinct ne servira à rien:
Code :
1
2
3
4
5
FichierId       VersNum
1                1
1                2
1                3
1                4
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h03   #5
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Pourquoi pas un MAX!

Code :
1
2
3
4
 
SELECT FichierId, MAX(VersNumero)
FROM ...
GROUP BY FichierId
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h58   #6
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
ce n'est pas la bonne solution, car ça renvoit VersNumero le plus grand (=2) sauf que le nom du fichier renvoyé est celui de la version 1 (=1).
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 18h12   #7
Rédacteur/Modérateur
 
Avatar de David55
 
Homme David S.
Etudiant en alternance
Inscription : août 2010
Messages : 1 167
Détails du profil
Informations personnelles :
Nom : Homme David S.
Âge : 22
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Etudiant en alternance
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2010
Messages : 1 167
Points : 2 304
Points : 2 304
Citation:
ce n'est pas la bonne solution, car ça renvoit VersNumero le plus grand (=2) sauf que le nom du fichier renvoyé est celui de la version 1 (=1).
Dans ce cas je ne vois pas vraiment comment faire sans sous requete
__________________
Vous trouverez ma page perso avec des tutoriels sur Android et BIRT au lien suivant : http://dsilvera.developpez.com
N'oubliez pas de voter pour les messages dont la réponse est pertinente (en bas à droite du cadrant)
Vous voulez afficher du code :
Votre problème est résolu :
Pas de question technique par MP !
David55
David55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 18h38   #8
Futur Membre du Club
 
FX
Inscription : juillet 2010
Messages : 75
Détails du profil
Informations personnelles :
Nom : FX

Informations forums :
Inscription : juillet 2010
Messages : 75
Points : 17
Points : 17
Je pense que je vais passer par la création d'une table temporaire, à défaut d'une solution en une requête.

Merci.
pixworld est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h01.


 
 
 
 
Partenaires

Hébergement Web