Pb sur uen requete sql

fran180886 -  
 fran180886 -
Bonjour à tous,
je voudrais savoir si quelqu'un pourrait maider pour une requete SQL car j'ai un problème je n'arrive par avoir de résulatat...
Pourriez vous venir par msn ?
mon compte est fran.fr@caramail.com
merci de vos réponses!!

1 réponse

  1. maily Messages postés 7560 Statut Contributeur 453
     
    Bonjour!
    Oui, on peut t'aider sur une requête SQL si tu la mets et si tu expliques plus ton problème.
    Non, personne ne viendra sur msn car le principe de ce forum est que tout le monde profite des réponses faites.

    bonne journée!
    0
    1. Sacred Messages postés 679 Statut Membre 77
       
      que veux tu afficher, quelles sont les tables concernées?
      0
    2. fran180886
       
      Bonjour à tous,
      voici toutes les tables concernées :
      ETUDIANT(no_etud, nom_etud, prenom_etud, annee_arrivee, diplôme, statut)
      PROMOTION(nom_promo, annee_sortie, type_promotion)
      RAPPORT(no_rapport, titre, date_sout, nom_promo#, no_entrep#)
      ENTRREPRISE(no_entrep, nom_entrep, ad_entrep, no_pays#)
      PAYS(no_pays, nom_pays)
      ECRIT_PAR(no_rapport#, no_etud#)
      PRETE_A(no_rapport, no_etud#, date_pret)
      MOT_CLE(lib_mot_cle)
      INDEXE_PAR(no_rapport#, lib_mot_cle#)
      DECRITE_PAR(no_entep#, lib_mot_cle#)

      La requête qui me pose problème est :
      liste des promotions pours lesquels les rapports sont actuellement tous prêtés

      J'ai réussi à faire une requpete mais je n'arrive pas la représenter entiérement à cose des condition pour les divions par 0. Voici ma requête :
      SELECT RAPPORT.nom_promo, count(DISTINCT no_rapport) as a
      INTO TEMP R1
      FROM RAPPORT
      GROUP BY RAPPORT.nom_promo
      UNION
      SELECT PROMOTION.nom_promo,0
      FROM PROMOTION
      WHERE nom_promo NOT IN
      (SELECT RAPPORT.nom_promo
      FROM RAPPORT)
      ;
      SELECT PROMOTION.nom_promo, count(DISTINCT ECRIT_PAR.no_rapport) AS b
      INTO TEMP R2
      FROM PROMOTION, RAPPORT, ECRIT_PAR
      WHERE PROMOTION.nom_promo=RAPPORT.nom_promo
      AND ECRIT_PAR.no_rapport=RAPPORT.no_rapport
      GROUP BY RAPPORT.no_rapport, PROMOTION.nom_promo
      HAVING count(no_etud)>= 2
      UNION
      SELECT PROMOTION.nom_promo,0
      FROM PROMOTION
      WHERE nom_promo NOT IN
      (SELECT PROMOTION.nom_promo
      FROM PROMOTION, RAPPORT, ECRIT_PAR
      WHERE PROMOTION.nom_promo=RAPPORT.nom_promo
      AND ECRIT_PAR.no_rapport=RAPPORT.no_rapport
      GROUP BY RAPPORT.no_rapport, PROMOTION.nom_promo
      HAVING count(no_etud)>=2);
      ;
      SELECT R1.nom_promo, b*100/a
      FROM R1, R2
      WHERE R1.nom_promo=R2.nom_promo
      AND a <>0
      UNION
      SELECT R1.nom_promo,0
      FROM R1
      WHERE nom_promo NOT IN
      (SELECT R1.nom_promo
      FROM R1,R2
      WHERE R1.nom_promo=R2.nom_promo
      AND a <>0)

      Je n'arrive pas à représenter la condition a<>0 en schéma relationnel car on ne met jamais de "where" au milieu d'u schéma...

      Voici ma requête modifié dont je ne trouve pas l'erreur :
      SELECT.nom_promo, count(no_rapport) AS a
      INTO TEMP R1
      FROM RAPPORT
      GROUP BY nom_promo
      UNION
      SELECT nom_promo,0
      FROM PROMOTION
      WHERE nom_promo NOT IN
      (SELECT nom_promo
      FROM RAPPORT)
      ;
      SELECT nom_promo AS b
      INTO TEMP R2
      FROM R1
      WHERE a=0
      ;
      SELECT RAPPORT.nom_promo, count(DISTINCT no_rapport) as c
      INTO TEMP R3
      FROM RAPPORT,R2
      WHERE RAPPORT.nom_promo<>b
      GROUP BY RAPPORT.nom_promo
      ;
      SELECT PROMOTION.nom_promo, count(DISTINCT ECRIT_PAR.no_rapport) AS d
      INTO TEMP R4
      FROM PROMOTION, RAPPORT, ECRIT_PAR, R2
      WHERE PROMOTION.nom_promo<>b
      AND PROMOTION.nom_promo=RAPPORT.nom_promo
      AND ECRIT_PAR.no_rapport=RAPPORT.no_rapport
      GROUP BY RAPPORT.no_rapport, PROMOTION.nom_promo
      HAVING count(no_etud)>= 2
      ;
      SELECT R3.nom_promo, c*100/d
      FROM R3, R4
      WHERE R3.nom_promo=R4.nom_promo
      UNION
      SELECT b,0
      FROM R2

      L'ordinateur me dit divion by 0

      Merci de vos réponses et de votre aide d'avance!
      0