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 avec une requéte mysql(Oracle 9)


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Probléme avec une requéte mysql(Oracle 9)
    Bonjour,

    J'ai un soucis pour créer une requête où au moins un des critères doit être vérifié.
    Je m'explique, voici le schéma de la base :


    ETUDIANT (numetud, nom, prenom, datenaiss, civilite, patronyme, numinsee ,adresse)

    MODULE (codmod, nomod, effecmax)

    EXAMEN (codmod, codexam, datexam)

    RESULTAT (numetud, codmod, codexam, note)

    INSCRIPTION ( numetud, codmod, datinsc, numtd)

    PREREQUIS (codmod, codmodpreq, noteprereq)

    Et offet je veux afficher les etudiants(nom,...) qui sont inscrits à la fois à deux modules dont on précisera le codmod dans la requête. je dois faire plusieurs sollution mais je bloque surtout (avec un opérateur ensembliste(minus)).


    voici ma/mes requête(s) :


    prompt donner le num du premier module1
    accept module1
    prompt donner le num du deuxieme module2
    accept module2
    select nom, prenom, t.numetud, i.codmod from etudiant t, inscription i where
    t.numetud=i.numetud and i.codmod in ( select i.codmod from inscription i minus
    select i.codmod from inscription i where i.codmod not like '%&module1%' and i.codmod not like '%&module2%');

    mais ça m'affiche tous les etudiants qui sont inscrit dans un module ou l'autre ou les deux mais pas les deux a la fois!!

    j'ai essayer de rajouter une clause genre afficher uniquement les etudiants k'on le méme numetud (and i1.numetud=i2.numetud) mais ça trouve aucun etudiant donc voilà je me retourne vers vous!

    je précise que je suis débutant

    merci

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    heu y'a plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select nom, prenom, t.numetud
    from etudiant t, inscription i 
    where t.numetud=i.numetud 
    group by nom, prenom, t.numetud
    having sum (case when i.codmod like '%&module1%' 
    or i.codmod like '%&module1%'  then 1 else 0 end)=2
    sinon il vaut mieux éviter les LIKE et rechercher autant que possible sur les identifiants.

    edit:
    en relisant la question "au moins" se traduirait par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    having sum (case when i.codmod like '%&module1%' 
    or i.codmod like '%&module1%'  then 1 else 0 end) >=1
    edit2: "dont on précisera le codmod"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    select nom, prenom, t.numetud,i.codmod
    from etudiant t, inscription i 
    where t.numetud=i.numetud 
    and (nom, prenom, t.numetud)
    in (
       select nom, prenom, t.numetud
      from etudiant t, inscription i 
      where t.numetud=i.numetud 
      group by nom, prenom, t.numetud
      having sum (case when i.codmod like '%&module1%' 
      or i.codmod like '%&module1%'  then 1 else 0 end)>=1
      )
    edit 3 : rajout des end à la fin des cases
    mais j'ai la sensation bizarre de faire les devoirs d'un élève, mais bon y'a eu des essais visiblement dans le post initial.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Ok je te remercie infiniment "phili_b" c'est vraiment sympa de ta part, ça marche impéc .

    une dérniére question : est ce possible de le faire avec un opérateur ensembliste "minus" car cé là que je bloque(Projet) .

    Merci pour ta réponse c'es déjà beaucoup pour moi

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

Discussions similaires

  1. Encore un problème avec une requête MYSQL en C#
    Par encoremoi21258 dans le forum C#
    Réponses: 3
    Dernier message: 08/03/2014, 22h53
  2. Problème avec une requête MySQL
    Par Downy35 dans le forum Requêtes
    Réponses: 4
    Dernier message: 30/08/2006, 12h09
  3. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 21h34
  4. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 13h39
  5. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 11h29

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