begin process at 2010 02 09 23:11:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Débutant(s)

 > 

INDICE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

INDICE

vendredi 15 mai 2009 à 10:28:14 | INDICE

louise06

Bonjour,

Je suis une piètre débutante qui tente de créer des requêtes SQL dans son outil de travail.


Je veux récupérer les lignes d'une base qui répondent à plusieurs critères jusque là pas de souci. Mais cela se complique parce que pour un même individu j'ai plusieurs lignes qui ont un indice différent.

Ce que je souhaite c'est récupérer pour chaque individu la ligne qui correspond à mes critères mais qui a l'indice le plus élevé.

Ma requête est :

SELECT
pers_nom, pers_pre,rhpv_c1,rhpv_ind,rhpv_d1 FROM pers ,rh_persprev WHERE pers.pers_mat=rh_persprev.pers_mat AND rhpv_cod=5 AND rhpv_d1= '14/05/2009'

le résultat est :

pers_nom

pers_pre

rhpv_c1

rhpv_ind

rhpv_d1

TEST                                   

TEST          

promotion CHEF                                   

1

20090514 00:00:00.000

TEST                                   

TEST          

CDI                                              

2

20090514 00:00:00.000

test1

test1      

CDD                               

3

20090514 00:00:00.000


MAIS JE NE VEUX RECUPERER QUE LA LIGNE 2 POUR TEST et la 3 pour Test1

J'ai essayé avec

SELECT pers_nom, pers_pre,rhpv_c1,rhpv_ind,rhpv_d1 FROM pers ,rh_persprev WHERE pers.pers_mat=rh_persprev.pers_mat AND rhpv_cod=5 AND rhpv_d1= '14/05/2009' ANDrh_persprev.rhpv_ind = (SELECT max(rh_persprev.rhpv_ind) FROM rh_persprev)

Mais ça ne me renvoie aucun résultat

Merci de votre aide
lundi 18 mai 2009 à 15:14:26 | Re : INDICE

crn_c21

Tu peux donner les champs de tes tables stp?

lundi 18 mai 2009 à 16:13:56 | Re : INDICE

gperuch


salut ,
il te manque un critere dans ton select max:

SELECT pers_nom, pers_pre,rhpv_c1,rhpv_ind,rhpv_d1
FROM pers T1,
          rh_persprev T2
WHERE T1.pers_mat=T2.pers_mat
AND rhpv_cod=5
AND rhpv_d1= '14/05/2009'
AND T2.rhpv_ind = (SELECT max(T3.rhpv_ind) FROM rh_persprev T3 where T2.rhpv_ind = T3.rhpv_ind)

j'ai pas testé, mais ca doit marcher

greg
lundi 18 mai 2009 à 16:43:52 | Re : INDICE

aieeeuuuuu

Réponse acceptée !
Bonjour.


il y a plus simple :

SELECT pers_nom, pers_pre, MAX(rhpv_c1)
FROM MaTable
GROUP BY
pers_nom, pers_pre

à adapter, car je ne sais pas a quoi correspondent les deux derniers champs dans votre requete (si les autre champs varient également, seule la solution dans le style de gperuch pourra fonctionner)
lundi 18 mai 2009 à 16:50:16 | Re : INDICE

gperuch

Réponse acceptée !
Bonjour,
   J'ai corrigé l'erreur de ta requete pour que tu comprennes ou était le pb, par contre la réponse de aieeeeuuuuu est la meilleur methode . (bien plus propre , plus efficace et plus compréansible)

greg
jeudi 21 mai 2009 à 17:02:32 | Re : INDICE
jeudi 21 mai 2009 à 18:11:13 | Re : INDICE

louise06

La syntaxe max() nous renvoi une colonne en vue, la colonne indice n'était pas forcément la mieux.
Du coup je teste les dates, et je demande la date max pour chaque individu


J'ai revu ma requete ensuite de cette manière :

SELECT nivprev.pers_mat, pers_nom, pers_pre,niv_lib2,niv_lib3,date = max(rhpv_d2) FROM pers ,rh_persprev,nivprev,niveau2,niveau3 WHERE pers.pers_mat=rh_persprev.pers_mat AND rhpv_cod=3 AND pers.pers_mat=nivprev.pers_mat AND niveau2.niv_cod1=nivprev.niv_cod1 AND niveau2.niv_cod2=nivprev.niv_cod2 AND niveau3.niv_cod1=nivprev.niv_cod1 AND niveau3.niv_cod2=nivprev.niv_cod2 AND niveau3.niv_cod3=nivprev.niv_cod3 AND nivprev.niv_dat<='21/05/2009'  AND nivprev.niv_datf>'21/05/2009'  GROUP BY nivprev.pers_mat, pers_nom, pers_pre,niv_lib2,niv_lib3

J'obtiens bien une ligne par personne avec sa date la plus ancienne dans une colonne "vue" nommée date

Mais je ne sais pas comment compléter cette requête pour aller chercher dans cette selection = les dates dans 'date' correspondant à mes critères :  date >= '21/05/2009' AND date <= '28/05/2009'


Cette discussion est classée dans : pers, ind, rh, rhpv, persprev


Répondre à ce message

Sujets en rapport avec ce message

Problème requête sur un double critère. [ par pymm ] Bonjour à tous, J'ai une base Access dans laquelle j'ai trois tables. 1 table Personne, 1 table Pers_Ag et 1 Agence.je souhaite recupérer les personne set d'une variable retourne null [ par bootchoz ] salut !qu'est-ce qui ne va pas dans ma procédure ?quelqu'un peut m'aider ? pourquoi @id_pers vaut null apres le set ?merci d'avance...CREATE PROCEDURE


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales