Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
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 25/01/2011, 10h32   #1
Membre confirmé
 
Avatar de alex61
 
Homme alexandre Parrein
Étudiant
Inscription : mai 2010
Messages : 371
Détails du profil
Informations personnelles :
Nom : Homme alexandre Parrein
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 371
Points : 283
Points : 283
Par défaut Date + year(string)

bonjour

voila j'aimerais faire un where avec dedans quelquechose dans ce genre
Code :
 Date()- year(epi_dureedevie)   >= epi_MiseEnService
je voudrait que ca me donne la epi_MiseEnService - epi_dureedevie

sachant que epi_dureedevie est une string contanant un nombre d'année et epi_MiseEnService est une date


cordialement
__________________

si tu es perdu clique ici
langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
BI : SAS, BO, Talend, Cognos, Microsoft BI, Qliqview
alex61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 11h10   #2
Membre confirmé
 
Avatar de alex61
 
Homme alexandre Parrein
Étudiant
Inscription : mai 2010
Messages : 371
Détails du profil
Informations personnelles :
Nom : Homme alexandre Parrein
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 371
Points : 283
Points : 283
j'ai trouver tout seul ...

Code :
1
2
3
4
5
SELECT ec.ent_nom, ec.ent_courriel, ec.ent_fax, ec.ent_auteur, EPI.epi_code, EPI.epi_marque, EPI.epi_MiseEnService, Date()-year(epi_dureedevie)+month(1)
FROM EntrepriseCliente AS ec, EPI
WHERE ec.ent_nom=EPI.ent_nom And EPI.epi_HS<>'1'
GROUP BY ec.ent_nom, ec.ent_courriel, ec.ent_fax, ec.ent_auteur, EPI.epi_code, EPI.epi_marque, EPI.epi_MiseEnService, Date()-year(epi_dureedevie)+month(1)
HAVING EPI.epi_MiseEnService<Date()-year(epi_dureedevie)+month(1);
__________________

si tu es perdu clique ici
langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
BI : SAS, BO, Talend, Cognos, Microsoft BI, Qliqview
alex61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 11h26   #3
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 176
Points : 2 805
Points : 2 805
Bonjour Alex61,

Juste une remarque, concernant l'optimisation de ta requête, et l'utilisation du GROUP BY, en général :
Code sql :
1
2
3
4
5
6
7
SELECT ec.ent_nom, ec.ent_courriel, ec.ent_fax, ec.ent_auteur, EPI.epi_code,
  EPI.epi_marque, EPI.epi_MiseEnService, Date()-year(epi_dureedevie)+month(1)
FROM EntrepriseCliente AS ec, EPI
WHERE ec.ent_nom=EPI.ent_nom AND EPI.epi_HS<>'1'
GROUP BY ec.ent_nom, ec.ent_courriel, ec.ent_fax, ec.ent_auteur, EPI.epi_code,
  EPI.epi_marque, EPI.epi_MiseEnService, Date()-year(epi_dureedevie)+month(1)
HAVING EPI.epi_MiseEnService<Date()-year(epi_dureedevie)+month(1);
==> il me semble qu'il serait plus judicieux de mettre le test de la clause HAVING ("Critères", via l'assistant) dans le WHERE ("Où", via l'assistant).

En effet, il faut se rappeler que SQL (pas seulement Access), effectue le HAVING après le groupement des enregistrements, alors que le WHERE est traité avant le groupement des enregistrements. En conséquence, le HAVING ne devrait contenir des tests QUE sur les champs "calculés" d'un groupe (count(*), sum(xxx), min(xxx), etc...).


Donc, dans ton cas, Access :
  • traite, d'abord, tous les enregistrements (sauf ceux répondant à ta clause WHERE) ;
  • groupe le résultat comme indiqué dans la requête ;
  • et, enfin, exclus les enregistrements tels que décrit dans la clause HAVING.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 11h48   #4
Membre confirmé
 
Avatar de alex61
 
Homme alexandre Parrein
Étudiant
Inscription : mai 2010
Messages : 371
Détails du profil
Informations personnelles :
Nom : Homme alexandre Parrein
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2010
Messages : 371
Points : 283
Points : 283
c'est ce que j'avais commencer a faire , mais ca ne marche pas

et je ne pas vraiment besoin d'optimiser a fond cette requête car elle n'est exécuter qu'une fois par jour

cordialement
__________________

si tu es perdu clique ici
langage connus : xhtml/css , ASP.NET/VB.NET , JS, JQuery , PHP , SQL, PL/SQL, JAVA,
BI : SAS, BO, Talend, Cognos, Microsoft BI, Qliqview
alex61 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 +2. Il est actuellement 02h51.


 
 
 
 
Partenaires

Hébergement Web