A voir également:
- Pb sur uen requete sql
- Logiciel sql - Télécharger - Bases de données
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros ✓ - Forum DS
- Sql (+) - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
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!