Pb sur uen requete sql

Fermé
fran180886 - 18 févr. 2005 à 09:40
 fran180886 - 19 févr. 2005 à 08:37
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

maily Messages postés 7556 Date d'inscription lundi 26 juin 2000 Statut Contributeur Dernière intervention 23 juin 2023 453
18 févr. 2005 à 09:47
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
Sacred Messages postés 676 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 29 juillet 2006 77
18 févr. 2005 à 10:04
que veux tu afficher, quelles sont les tables concernées?
0
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