Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme requete [ SQL Server, MSDE, SQL Express / Requêtes ] (mathvez)

lundi 21 janvier 2008 à 17:32:47 | Probleme requete

mathvez

Bonjour j'ai une requete SQL:

SELECT Emp_Code, Srv_Code, Sec_Code, Zon_Code, Emp_UserID,
Max(datediff(day,isnull(Date_Debut,'2007-01-01'),isnull(Date_Fin,'2007-03-31'))) as NbJour, Sit_Type
FROM
(SELECT Vue_Employe_Prog_Reconnaissance.Emp_Code, Vue_Employe_Situation.Srv_Code, Vue_Employe_Situation.Sec_Code,
Vue_Employe_Situation.Zon_Code,
case when Vue_Employe_Situation.Sit_Date_Debut < '2007-01-01' or Vue_Employe_Situation.Sit_Date_Debut is null then '2007-01-01' else Vue_Employe_Situation.Sit_Date_Debut  
end as Date_Debut,
case when Vue_Employe_Situation.Sit_Date_Fin > '2007-03-31' or Vue_Employe_Situation.Sit_Date_Fin is null then '2007-03-31' else Vue_Employe_Situation.Sit_Date_Fin
end as Date_Fin ,
Vue_Employe_Prog_Reconnaissance.Emp_UserID, Vue_Employe_Situation.Sit_Type

FROM Vue_Employe_Situation INNER JOIN Vue_Employe_Prog_Reconnaissance ON Vue_Employe_Situation.Emp_Code=Vue_Employe_Prog_Reconnaissance.Emp_Code
WHERE (Vue_Employe_Situation.Sit_Date_Debut <= '2007-01-01' and Vue_Employe_Situation.Sit_Date_Fin >= '2007-01-01'
and Vue_Employe_Situation.Sit_Date_Fin <= '2007-03-31') or (Vue_Employe_Situation.Sit_Date_Debut >= '2007-01-01' and Vue_Employe_Situation.Sit_Date_Fin <= '2007-03-31') or (Vue_Employe_Situation.Sit_Date_Debut >= '2007-01-01' and Vue_Employe_Situation.Sit_Date_Debut <= '2007-03-31' and Vue_Employe_Situation.Sit_Date_Fin >= '2007-03-31') or (Vue_Employe_Situation.Sit_Date_Debut <= '2007-01-01' and Vue_Employe_Situation.Sit_Date_Fin >= '2007-03-31') or (Vue_Employe_Situation.Sit_Date_Debut <= '2007-03-31' and isnull(Vue_Employe_Situation.Sit_Date_Fin, getdate()) >= '2007-03-31')
) STOT
Group by Emp_Code, Srv_Code, Sec_Code, Zon_Code, Emp_userid, Sit_Type

qui me retourne
code       service   secteur     zone              user               NbJour           situation
666092     14         130        1182        BEAULIEU           47                   T
666092     17         102        1090        BEAULIEU           65                   R
669384     12         102        1012        BELZILEFR          39                   R
669384     14         112        1112        BELZILEFR          72                   R

Je voudrais savoir ce que je dois rajouter pour faire sortir seulement 1 enregistrement par user selon les 2 conditions suivante:
-si la situation est temporaire (T) et + que 45 jour alors tu utilise cet enregistrement
-sinon tu utilise l'enregistrement qui a le plus de jour de fais

Merci de votre aide elle sera beaucoup apprécié


mardi 22 janvier 2008 à 13:16:03 | Re : Probleme requete

KenZara

    Bonjour,

Il me semble que tu ne peux pas faire une requête avec des "if" il faudra dans ce cas, faire une procédure stockée .. Dans quelle type de base de données travailles tu ?

Kenza

mardi 22 janvier 2008 à 14:27:39 | Re : Probleme requete

mathvez

Je travaille avec une petite base de donnée acces ( un projet de bilan médical ) , j'utilise cette requete avec les 3 lignes de code suivant ( codé en VBA (macro) ) .

Dim bdAccidents as ADODB.Recordset
Set bdAccidents = new ADODB.Recordset
bdAccidents.Open "Requete SQL", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

ensuite je traite mes infos avec

While Not (bdAccidents.EOF) ' Pour chacun des enregistrements

'Code a traiter

bdAccidents.MoveNext

Wend

Pour simplifier la requête:

SELECT Emp_Code, Srv_Code, Sec_Code, Zon_Code, Emp_UserID,
Max(datediff(day,isnull(Date_Debut,'2007-01-01'),isnull(Date_Fin,'2007-03-31'))) as NbJour, Sit_Type
FROM ( ****Requete select****) GTotal
Group by Emp_Code, Srv_Code, Sec_Code, Zon_Code, Emp_UserID, Sit_Type

qui me retourne
code       service   secteur     zone              user               NbJour           situation
666092     14         130        1182        BEAULIEU           47                   T
666092     17         102        1090        BEAULIEU           65                   R
669384     12         102        1012        BELZILEFR          39                   R
669384     14         112        1112        BELZILEFR          72                   R

Je voudrais savoir ce que je dois rajouter pour faire sortir seulement 1 enregistrement par user selon les 2 conditions suivante:
-si la situation est temporaire (T) et + que 45 jour alors tu utilise cet enregistrement
-sinon tu utilise l'enregistrement qui a le plus de jour de fais

Merci de votre aide elle sera beaucoup apprécié


mardi 22 janvier 2008 à 20:32:56 | Re : Probleme requete

mathvez

Réponse acceptée !
Finalement pour atteindre mon but, jai utilisé la même requête mais jai utilisé le code de l'application pour ignorer certains enregistrements en fonction des 2 conditions suivantes:
-si la situation est temporaire (T) et + que 45 jour alors tu utilise cet enregistrement
-sinon tu utilise l'enregistrement qui a le plus de jour de fais

Si jamais quelqu'un trouve la solution pour ajouter ces conditions à la requête SQL, svp me faire parvenir la solution. Mon système deviendrais beaucoup plus performant.

Merci



Cette discussion est classé dans : date, code, employe, vue, situation


Répondre à ce message

Sujets en rapport avec ce message

un gran pb de redondance [ par mehdi911 ] Mehdi j ai table assid_emp code : code assid matricule :emp date_assid : date d absence Probleme de requete Date [ par Neocarter ] Bonjour a tous,J'ai actuellement un petit probleme dans une de mes requetes SQL. En effet, a chaque demarrage, j'ai l'erreur "Fonction 'Date' non defi optimisation requete sous sql server 7 [ par lulu1537 ] Bonjour, j'ai une table ainsi crée sous Sql server 7tblCUMULS_ELEMENTS(    DATE_VENTE  date,     CODE_ELEMENT varchar(13),     CODE_RAYON varchar(10), Requête FTS sur vue. [ par gillou1664 ] Bonjour tout le monde.Bon, je suis pas très bon en SQL et j'ai un petit soucis (enfin gros :p) : J'essaie d'utiliser une fonction de recherche de text Probleme de date avec une base Paradox [ par Rycku ] Bonjour, Je travaille avec une base Paradox 7.0 en connection ODBC avec Windev Mon souci est le suivant, j'ai une requete select avec une conditio Requete oracle SQL fonctions d'agrégation [ par anasiq ] Bonjour à tous j ai un probleme dans une rekette si quelqu'un vous pouvez m'aider : en 2008 ,quel est le mois qui a connu le passage du plus petit nom Probleme dans un requete aide moi svp!! [ par cybercop ] bjr a tt, bon je suis en sql server 2005 express , j'ai 1 prb dans un requette la condition n'est affiche pas aucun resultat .il ma donne un erreur  < Probleme dans un requete aide moi svp!! [ par cybercop ] bjr a tt, bon je suis en sql server 2005 express , j'ai 1 prb dans un requette la condition n'est affiche pas aucun resultat .il ma donne un erreur  Date et heure avec les procédures stockées [ par jul21 ] Bonjour,Je travail MS SQL server 2005.J'aimerais faire un formatage de date dans une procédure stockée.La personne passe le paramètre de date jour,moi Création d'un code SQL, j'ai besoin d'aide s'il vous plait [ par hydroxyproline ] Bonjour à tous,J'ai un soucis avec un code SQL que je viens de créer, (je ne suis pas du tout informaticien, je suis chimiste, et c'est pourquoi j'ai


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,640 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.