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 :

[Informix] Recherche d'élève avec note donnée sur une période


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut [Informix] Recherche d'élève avec note donnée sur une période
    Bonjour
    j'ai une simple table Note :

    | Nom | Prenom | DateNote | Note |

    je veux extraire les noms et les prénoms des étudiants qui n'ont pas pu avoire la myenne dans la période "01/01/2003" "31/12/2007" et qui ont pu avoire la moyen au moins un fois apres la date "01/01/2008".
    La solution suivante ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         Select Nom,Prenom  
                  from Note
                  where Nom,Prenom IN ( Select Nom,Prenom   From Note 
                                                 where Note <= "10" 
                                                  and DateNote >="01/01/2003"
                                                  and DateNote <="31/12/2007" ) 
                   AND Note >= "10" 
                   AND DateNote >="01/01/2008"
    Je veux une solution simple sans programme ni table intermédiaire

    Merci d'avance

  2. #2
    Scorpi0
    Invité(e)
    Par défaut
    Bonjour,

    La solution suivante ne marche pas
    Pourrait-tu être plus précis. La requête ne te renvoie pas le résultat escompté (alors, poste nous le jeu de données et le résultat escompté), ou obtiens-tu une erreur (alors, poste nous l'erreur obtenu) ?

    De plus, quel est ton SGBD ? Oracle, MySQL ?..
    Enfin, à tout hasard, le champ DateNote est-il bien un type Date ?

  3. #3
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    il manque déjà à mon avis des parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         SELECT Nom,Prenom  
                  FROM Note
                  WHERE (Nom,Prenom) IN ( SELECT Nom,Prenom   FROM Note 
                                                 WHERE Note <= "10" 
                                                  AND DateNote >="01/01/2003"
                                                  AND DateNote <="31/12/2007" ) 
                   AND Note >= "10" 
                   AND DateNote >="01/01/2008"
    de plus, le format de la date me semble bizarre

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    j'ai ca comme message erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Nom,Prenom IN ( SELECT Nom,Prenom   FROM Note
    Syntaxe error

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Pour Information je suis sur Informix

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Cybher Voir le message
    salut,

    il manque déjà à mon avis des parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
         SELECT Nom,Prenom  
                  FROM Note
                  WHERE (Nom,Prenom) IN ( SELECT Nom,Prenom   FROM Note 
                                                 WHERE Note <= "10" 
                                                  AND DateNote >="01/01/2003"
                                                  AND DateNote <="31/12/2007" ) 
                   AND Note >= "10" 
                   AND DateNote >="01/01/2008"
    de plus, le format de la date me semble bizarre
    Même avec les parenthèses, j'ai toujour le message 201: A syntax error has occurred. et le curseur pointe sur la vigule .

    Merci pour l'aide

  7. #7
    Scorpi0
    Invité(e)
    Par défaut
    Peut être que Informix ne gère pas les couples de valeurs.
    Essaye comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT n1.Nom,n1.Prenom  
    FROM Note n1, Note n2
    WHERE n1.Nom = n2.Nom
    and n1.Prenom = n2.Prenom
     
    -- Partie bon eleve
    and n1.Note >='10'
    and n1.DateNote >='01/01/2008'
     
    -- Partie mauvais eleve
    and n2.Note <='10'
    AND n2.DateNote >='01/01/2003'
    AND n2.DateNote <='31/12/2007'

  8. #8
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Bonjour

    Merci Scorpi0 ta requette est parfaite

    C'est peut être que informix ne gére pas les couples de valeurs.
    Ce qui est grave pour ma prochiane requette :

    Je dois extraire les étudiant qui n'ont pas passer les éxamens dans la période 01/01/2006 à 31/12/2007 Mais ils ont passer au mois un examen apres 01/01/2008

    La solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     (Nom,Prenom) NOT IN ( Select ...)
    est à rejeter car Informix ne prend pas en charge les couples de valeurs.

    Merci Pour votre aide.

  9. #9
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Salut,
    Essaie avec exists / not exists :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select nom,prenom
    from note n1
    where not exists (select 1 from note n2 where n2.prenom=n1.prenom and n2.nom=n1.nom and n2.datenote between '01/01/2006' and '31/12/2007')
    and exists (select 1 from note n3 where n3.prenom=n1.prenom and n3.nom=n1.nom and n3.datenote >= '01/01/2008')
    En passant pour moi pas la moyenne ça veut dire <10

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2005
    Messages : 51
    Points : 51
    Points
    51
    Par défaut
    Bonjour

    Merci skuatamad ca marche
    Pour la moyenne T'as raison c'est une faute

    Merci pour tout le monde

    Bon Soire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Recherche] Lecteur video avec sous titres sur le web
    Par VSEB33 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 22/10/2009, 22h27
  2. Réponses: 1
    Dernier message: 11/01/2008, 04h57
  3. Problème avec les indexes sur une base de données.
    Par osoudee dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/02/2006, 09h24
  4. pb d'insertion avec un SELECT sur une autre table
    Par epeichette dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 22h58

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