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

SQL Oracle Discussion :

problème avec une simple interrogation sql


Sujet :

SQL Oracle

  1. #1
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut problème avec une simple interrogation sql
    bonsoir j'ai une interrogation qui doit me renvoyer les étudiants qui n'ont pas payées le mois d'octobre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from etudiant where id_etudiant !=  (select id_etudiant from payement_etudiant where mois='octobre')
    les tables sont bien initialisée et contienne les mêmes id_etudiant

    mon interrogation doit me retourner les etudiants qui n'ont pas payée le mois d'octobre , mais elle me renvoie aucune ligne .

    existe t'il une incohérence dans mon interrogation ?

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 391
    Points
    18 391
    Par défaut
    Il faut utiliser NOT IN / NOT EXISTS : si vous aviez eu plus d'un étudiant qui avait payé octobre vous auriez eu une erreur Oracle.

    Si la requête n'a pas retourné d'erreur ni résultat c'est que soit :
    - aucun étudiant n'a payé octobre
    - octobre ne s'écrit pas 'octobre'

  3. #3
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    j'ai essayé avec not exist
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL> select * from etudiant where id_etudiant not EXISTS  (select id_etudiant fr
    om payement_etudiant where mois='octobre');
    select * from etudiant where id_etudiant not EXISTS  (select id_etudiant from pa
    yement_etudiant where mois='octobre')
                                                 *
    ERREUR Ó la ligne 1 :
    ORA-00920: opÚrateur relationnel non valide

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 391
    Points
    18 391
    Par défaut
    La syntaxe est un peu différente.

    Avec NOT IT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM etudiant
    WHERE id_etudiant NOT IN (SELECT id_etudiant
                              from payement_etudiant
                              WHERE mois = 'octobre')
    Avec NOT EXISTS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT *
    FROM etudiant et
    WHERE NOT EXISTS (SELECT NULL
                      from payement_etudiant pe
                      WHERE pe.mois = 'octobre'
                      AND pe.id_etudiant = et.id_etudiant )

  5. #5
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    merci beaucoup pour votre aide , je vais corriger mon code

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 391
    Points
    18 391
    Par défaut
    Vous allez corriger la syntaxe mais vous n'avez pas réagit à cette remarque toute aussi importante :

    Si la requête n'a pas retourné d'erreur ni résultat c'est que soit :
    - aucun étudiant n'a payé octobre
    - octobre ne s'écrit pas 'octobre'

  7. #7
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous allez corriger la syntaxe mais vous n'avez pas réagit à cette remarque toute aussi importante :

    Si la requête n'a pas retourné d'erreur ni résultat c'est que soit :
    - aucun étudiant n'a payé octobre
    - octobre ne s'écrit pas 'octobre'
    j'ai fait des check lors de la saisie donc octobre s'écrit octobre
    si aucun étudiant n'a payé octobre alor elle doit fournir tout les etudiants . non ?

    j'avais une autre problème si un étudiant a payé septembre par exemple et n'as pa payé octobre alor il ne figure pas dans la liste des étudiants qui n'ont pas payé octobre , c'est pour cela je doit revérifier le syntaxe avec des test .

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 391
    Points
    18 391
    Par défaut
    Citation Envoyé par scofild20 Voir le message
    si aucun étudiant n'a payé octobre alor elle doit fournir tout les etudiants . non ?
    Avec le NOT IN ou NOT EXISTS oui, mais pas avec votre première requête.

  9. #9
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    sayé j'ai verifier le code et le fonctionnement sont ok .

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

Discussions similaires

  1. Problème avec une requête dans SQL-Server
    Par krolis dans le forum Développement
    Réponses: 6
    Dernier message: 09/01/2011, 21h53
  2. Problème avec une requête en SQL dynamique
    Par pascal_T dans le forum PL/SQL
    Réponses: 4
    Dernier message: 26/08/2008, 15h23
  3. [POO] Problème avec une classe + requêtes sql
    Par mithrendil dans le forum Langage
    Réponses: 2
    Dernier message: 30/04/2007, 08h27
  4. [VB]Problème avec une requête SQL
    Par Tyrael62 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 18/03/2006, 17h47
  5. Problème avec une requete SQL sous access
    Par Luther13 dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 14/12/2005, 10h39

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