Requette SQL avec ckause where max

younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012 - 30 nov. 2009 à 12:48
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012 - 1 déc. 2009 à 09:20
Bonjour,

après plusieurs teste et recherche sans resultat souhaité, je viens demander votre aide.

J'ai quatres tables (base mysql).

Resultat souhaité :

Table -projet- : Les informations sur les projets (clé pri. code_projet)
Table -projet_tache- : les codes des projets et les codes des taches
Table -tache- : les informatiosn sur les taches (clé pri. code_tache)
Table -changer_etat- : les informations sur l'avancement des etats des projets (clé pri. code_etat,code_projet,date_etat).

Table changer_etat:
code_etat : 1 =>En cours
code_etat : 2 =>Terminé

j'aimerai recuperer les code_projet des projets terminés (code_etat=2) d'une tache donnée.

c'est à dire, lorsque je veux affecté une tache à un projet, je vérifie tout d'abord si cette tâche existe deja dans la base, si oui, je verifie s'elle appartient à un projet qui n'est pas encore terminé, si oui je fais mes teste dans le programme (php).
Ma requette est :

SELECT code_projet FROM projet_tache WHERE code_tache IN (SELECT code_tache FROM tache where nom_tache="test1") and code_projet IN (SELECT code_projet FROM changer_etat WHERE max(code_etat)!="2" )

Je veux avoir seulement les projets qui ont la tache 'test1' et qu'ils doivent pas être terminé.

Merci pour votre aide.



N'importe où. 
mais là où il le faut.

2 réponses

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
30 nov. 2009 à 14:59
Salut,

essaye :
... (SELECT code_projet FROM changer_etat GROUP BY code_projet HAVING max(code_etat)!="2")


thip
0
younes371 Messages postés 502 Date d'inscription mercredi 29 décembre 2004 Statut Membre Dernière intervention 20 mars 2012
1 déc. 2009 à 09:20
Salam,

merci pour votre réponse,

j'a procedé comme suit et ça marche (votre requette ça marche aussi, merci bcp)

SELECT code_projet FROM projet_tache WHERE code_tache IN (SELECT code_tache FROM tache where nom_tache ="test1") and code_projet NOT IN (SELECT code_projet FROM changer_etat WHERE code_etat="2")

comme ça j'aurai tous les projets non terminé (dans mon code, si un projet est terminé, c'est l'état final, il doit pas revenir en cours) donc seulement les projets dont l'etat est en cours = code_etat!=2.

Merci BCP.

N'importe où. 
mais là où il le faut.
0
Rejoignez-nous