Requete SQL

Résolu/Fermé
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010 - 24 juin 2009 à 09:59
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010 - 24 juin 2009 à 12:36
Bonjour à tous,

Je voulais savoir si il était possible de mettre un critère de sélection dans un GROUP BY ?

En fait, j'ai une requête qui doit aller cherché dans une table, des interventions (de techniciens). Ces interventions ont toutes un numéro et ce numéro apparait plusieurs fois dans la table car a chaque fois que quelqu'un fait une action sur cette intervention il doit le stipuler donc cela génère une ligne supplémentaire avec le même numéro de l'intervention. Et en fait je veux faire une requête qui récupère toutes les interventions et en prenant le dernier état de l'intervention (c'est a dire la dernière chose qui a été faite sur l'intervention). Donc pour ça, j'ai une requête qui récupère toutes les intervention, avec un group by ça me sélectionne une fois chaque intervention mais le problème est que la requête ne me sélectionne pas la dernière ligne de chaque intervention (donc le dernier état), ce qui fait que quand une intervention est clôturée et bien avec la requête ça me renvoi pas forcément ce dernier état (ça me renvoi qu'elle est en court).
Je sais ça parait compliquer mais c'est assez complexe a expliquer.

Merci d'avance

13 réponses

HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 606
24 juin 2009 à 10:01
Il faudrait la requête pour comprendre un peu mieux.

D'ores et déjà, regarde du côté de la clause ORDER BY et LIMIT 1.

0
Est-ce que tu as les dates d'indiquer dans ta requête??? Car dans ces conditions alors il serez utile que tu tries en fonction des dates à partir de la date d'aujourdhui.

Ou sinon tu peux peut être (je n'ai pas essayé), groupé tes données en fonction de la dernière date, et ce pour chaque numéros.

Tiens moi au courant.
0
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010
24 juin 2009 à 10:10
Oui j'ai essayé mais j'y arrive pas avec ORDER BY et LIMIT.
Donc la requete que j'ai essayé :

SELECT date, nom, etat FROM centre_appels, clients
WHERE clients.id_client = centre_appels.id_client
AND centre_appels.code_tech = 36184
AND centre_appels.date IN (SELECT MAX(date) FROM centre_appels GROUP BY id_tache)

Par exemple tu vois sur cette requete il me sort toutes les lignes de chaques intervention au lieu de me sortir seulement la dernière ligne de chaques invterventions. J'ai essayé de mettre le GROUP BY a la fin mais ça me renvoi seulement une seule ligne (la derniere ajoutée)
0
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010
24 juin 2009 à 10:12
Oui j'ai des dates. En fait il faut que j'allie un group by pour qu'il me prenne une ligne par intervention et les date pour qu'il me prenne justement la dernière ligne de chaque intervention, la galère :s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010
24 juin 2009 à 10:13
A savoir que dans la requete que j'ai poster le chiffre "36184" ce n'est rien, c'est juste un code de technicien. Normalement c'est des sessions mais la pour l'exemple j'ai pris directement un code de technicien
0
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010
24 juin 2009 à 11:28
Pas d'idée ??
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 383
24 juin 2009 à 11:30
Bonjour,

Petite question pour voir si j'ai bien compris ton problème, est-ce que la colonne ID_TACHE permet de distinguer les interventions, ou bien as-tu une autre colonne pour cela ?

A plus
0
Cisco_31 Messages postés 131 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 28 juin 2013 16
24 juin 2009 à 11:41
Et ça, ça fonctionne pas ?:

SELECT MAX(date), nom, etat FROM ...
0
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010
24 juin 2009 à 11:49
Salut Christounet,

je suis pas sûr d'avoir bien compris ta question. Mais oui la colonne id_tache (=numero d'intervention), permet de retrouver une intervention.

SELECT MAX(date), nom, etat FROM ... < -- Non ça ne fonctionne pas car il faut en fait faire un select max mais pour le GROUP BY en gros
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 383
24 juin 2009 à 11:56
Bonjour,

Alors je pense que le code suivant devrait faire ce que tu veux
SELECT date, nom, etat, id_tache FROM centre_appels, clients
WHERE clients.id_client = centre_appels.id_client
AND centre_appels.code_tech = 36184
AND centre_appels.date = (SELECT MAX(date) FROM centre_appels c1 
where c1.id_tache = centre_appels.id_tache)

A plus
0
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010
24 juin 2009 à 12:04
Merci Christounet ça marche. J'en pouvais plus de chercher. J'étais pas loin. Par contre j'aimerai comprendre ce que tu as fais. C'est quoi c1 ?
0
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 383
24 juin 2009 à 12:15
Bonjour,

J'ai tout d'abord rajouté la colonne ID_TACHE dans ton ordre SELECT, et dans le deuxième SELECT , je ne sélectionne que les enregistrements ayant le même ID_TACHE. C1 est simplement un autre nom pour la table centre_appels afin de pouvoir testé l'égalité entre l'ID_TACHE du premier SELECT et celui du deuxième SELECT, cela pouvait être autre chose comme MATABLE, c'est comme un synonyme.
A plus et content de t'avoir aidé.
0
XeptoR Messages postés 54 Date d'inscription mardi 20 janvier 2009 Statut Membre Dernière intervention 1 juillet 2010
24 juin 2009 à 12:36
Ok ok merci bien

@+
0