IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Problème de requete avec YEAR


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème de requete avec YEAR
    Bonjour à tous,
    Je me permet de poster car je suis confronter à un petit problème de requête sql.


    j'ai la requête ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select A.pk_pers,A.pers_nom,A.pers_prenom FROM adresses A 
    LEFT OUTER JOIN Cotisations C On C.cot_pers_cpt = A.pk_pers
    WHERE YEAR(C.cot_date_cot) <= '2007' AND C.cot_adh=1 
    GROUP BY A.pk_pers,A.pers_nom,A.pers_prenom
    ORDER BY A.pers_nom ASC
    qui devrait me retourner uniquement les adhérents avec une cotisation jusqu'en 2007, hors cela me retourne des adhérents ayant une cotisation également pour 2008 et 2009

    voici la table cotisations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    [pk_cot] [int] IDENTITY(1,1) NOT NULL,
    	[cot_pers_cpt] [int] NULL,
    	[cot_couple] [bit] NOT NULL CONSTRAINT [DF__Cotisatio__cot_c__5441852A]  DEFAULT ((0)),
    	[cot_pers_liee_cpt] [int] NULL,
    	[cot_adh] [bit] NOT NULL CONSTRAINT [DF__Cotisatio__cot_a__5535A963]  DEFAULT ((0)),
    	[cot_don] [bit] NOT NULL CONSTRAINT [DF__Cotisatio__cot_d__5629CD9C]  DEFAULT ((0)),
    	[cot_first_adh] [datetime] NULL,
    	[cot_date_cot] [datetime] NULL,
    	[cot_tranche_tarif] [int] NULL,
    	[cot_reg] [int] NULL,
    	[cot_fed] [int] NULL,
    	[cot_sec] [int] NULL,
    	[cot_origine] [varchar](50) COLLATE French_CI_AI NULL,
    	[cot_observation] [ntext] COLLATE French_CI_AI NULL,
    	[cot_recu] [varchar](50) COLLATE French_CI_AI NULL,
    	[cot_periode] [int] NULL,
    	[cot_fin] [datetime] NULL,
    	[cot_statut] [int] NULL,
    	[cot_motif_invalide] [int] NULL,
    	[cot_montant] [float] NULL,
    	[cot_mode_paiement] [varchar](50) COLLATE French_CI_AI NULL,
    	[cot_annee] [int] NULL,
    	[cot_date_relance] [datetime] NULL,
    	[cot_nb_relance] [int] NULL,
    	[cot_date_cloture] [datetime] NULL,
    	[cot_libelle_arret] [varchar](50) COLLATE French_CI_AI NULL,
    	[cot_current] [bit] NOT NULL CONSTRAINT [DF__Cotisatio__cot_c__6B24EA82]  DEFAULT ((0))

    La table adresses ne comporte que 3 champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pk_pers
    pers_nom,
    pers_prenom

    si vous avez des idées, je suis preneur
    merci par avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Pourquoi avoir utilisé une jointure externe ?
    La réponse est certainement à rechercher de ce côté
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci je vais regarder de ce côté

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Je ne pense pas que ce soit le problème...
    Même si ta jointure externe ne sert à rien parce que tu imposes des filtres sur cotisations qui ne garderont pas les valeurs NULL.

    Je pense que ton problème est qu'une personne ayant payé des cotisation jusqu'en 2007 peut aussi en avoir payé en 2008 ou 2009.

    Plusieurs solutions.
    - utiliser un NOT EXISTS pour indiquer que tu ne veux pas les personnes pour lesquelles il existe une cotisation après 20O7
    - retirer le filtre 2007 et ajouter une clause having pour ne garder que les personnes voulues :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     HAVING max(EXTRACT YEAR FROM C.cot_date_cot) <= 2007

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

Discussions similaires

  1. Problème de requete avec like
    Par eric062 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 21/10/2008, 17h18
  2. Problème de requete avec SUM
    Par fatiinfo dans le forum Hibernate
    Réponses: 2
    Dernier message: 27/08/2008, 16h18
  3. [Hibernate]Problème de requete avec "join fetch"
    Par gauloiskiki dans le forum Hibernate
    Réponses: 4
    Dernier message: 21/06/2006, 09h54
  4. Problème de requete avec type monétaire
    Par Pymm dans le forum ASP
    Réponses: 11
    Dernier message: 09/09/2005, 16h57
  5. Problème de requete avec Innodb
    Par silef dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/04/2004, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo