Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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/03/2010, 20h12   #1
Membre du Club
 
Sylvain
Inscription : avril 2002
Messages : 132
Détails du profil
Informations personnelles :
Nom : Sylvain
Localisation : Canada

Informations forums :
Inscription : avril 2002
Messages : 132
Points : 57
Points : 57
Envoyer un message via MSN à Sylvain245
Par défaut Obtenir chaque 1er enregistrement d'une clé secondaire

Bonjour,

La requête suivante, me donne quelque chose du genre:
Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT `parEveID` , `parID` , `parChaID` , `parStaID`
FROM `participant`
WHERE `parEveID`
IN ( 12, 13, 14, 15, 16)
AND `parStaID`
BETWEEN 2
AND 5
ORDER BY `parEveID` , `parStaID` , `parDateInscription` DESC
LIMIT 0 , 60
Résultats :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
parEveID parID parChaID parStaID
12 	48 	66 	4
12 	47 	68 	5
12 	49 	56 	5
12 	50 	134 	5
12 	51 	203 	5
13 	54 	67 	4
13 	53 	77 	4
13 	56 	56 	5
14 	61 	77 	3
14 	60 	68 	5
14 	59 	56 	5
14 	58 	203 	5
15 	63 	112 	2
15 	66 	66 	3
15 	64 	68 	4
15 	65 	77 	5
16 	68 	2 	2
16 	69 	77 	3
16 	71 	112 	5
16 	70 	66 	5
La dernière colonne indique un statut du personnage, plus le statut est élever, plus le chiffre est petit.

Par exemple, pour l'événement parEveID (13) il y a 3 participants, j'aimerais ne récupérer que le premier des 3 enregistrements. Est-ce possible de modifier cette requête pour obtenir quelque chose du genre comme résultats :

Code :
1
2
3
4
5
6
7
 
parEveID parID parChaID parStaID
12 	48 	66 	4
13 	54 	67 	4
14 	61 	77 	3
15 	63 	112 	2
16 	68 	2 	2
Qui permettrait d'obtenir le ID du personnage (parChaID) qui devrait être promu au plus haut rang parStaID (1). Avec une requete du genre :
Code :
1
2
 
UPDATE `participant` SET `parStaID` = 1 WHERE `parID` IN ( 12, 13, 14, 15, 16 )
Voilà, le but étant de ne pas arriver avec pleins de requete update dans une boucle...

Si vous avez des pistes, merci de m'éclairer

A bientot,

Sylvain
Sylvain245 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2010, 15h49   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Inscription : novembre 2005
Messages : 2 425
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 425
Points : 3 226
Points : 3 226
Saluton,
Dans ton exemple qu'est-ce qui détermine que ce soit
Code :
1
2
parEveID parID parChaID parStaID
13 	54 	67 	4
qui soit retenu plutôt que
Code :
1
2
parEveID parID parChaID parStaID
13 	53 	77 	4
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 17h50.


 
 
 
 
Partenaires

Hébergement Web