< vérification et explication de requetes | Forum des BTS

vérification et explication de requetes

louloute-a-57

New Member
bonsoir,
j'ai quelques requete à faire et je voudrais savoir si quelqu'un pourrait me dire si elles sont correctes et me donnée etune explication si ce n'est pas le cas;
et si c'est possible de m'expliquer 2 requetes que je n'estpas réussi du tout à faire.

R01: listes des adhérents filles de moins de 18 ans (date()) renvoie la date du jour où la requete est posée) la fonction year (expression de type date) renvoie l'année sur 4 chiffres.
R02: liste alphabétique des adhérents par stage (numéro, date,niveau et prix) avec le nom du cheval qui leur a été attribué.
R03: liste des adhérents par nom de catégorie et par ordre alphabétique.
R04: adhérents qui ne sont pas de la catégorie 1 et qui ne sont deniveau 1.
R05: liste desétalon, duplus grand au plus petit.
R06: adhérentsqui ne sont pas de marseille ou qui ne sont pas de niveau 1.
R07: adhérents qui ne sont pas à jour de leur cotisation.
cette requete j'ay comprend vraiment rien, je pense qu'il faut prendre en focntion du début et fin de stage, de l'échéance mais je ne comprend pas comment.
R08: listes des chevaux retenus pour le stage n°13.
R09: liste des inscription au stage n° 15 avec le nom du participant,son age, le nom du cheval et son encolure.
j'ai pas réussi cette requete non plus,il me semble qu'il faut que j'utilisa year date et la différence de la date de naissance pour donne l'age mais je comprend pas comment on peut faire ca.
pouvez vous m'expliquer?
merci
 
Salut,

Avoir une attention toute particulière avec la syntaxe et la casse des noms de tables et attributs

R1
SELECT ADHERENT.*
FROM ADHERENT
WHERE ADH_SEXE=&quot;F&quot;
AND Year(Date())-Year(ADH_NAISS)&lt;18;
Attention ! le résultat est faussé puisque Date() rentourne 26/04/07, alors qu'on se situe en 2001 dans ta BDD

R2
SELECT ADHERENT.*, STAGE.STA_NUM, STAGE.STA_PRIX, STAGE.STA_NIV, CHEVAL.CHE_NOM
FROM ADHERENT, INSCRIPT, STAGE, CHEVAL
WHERE ADHERENT.ADH_NUM=INSCRIPT.INS_ADH
AND INSCRIPT.INS_STA=STAGE.STA_NUM
AND INSCRIPT.INS_CHE=CHEVAL.CHE_NUM
ORDER BY STAGE.STA_NUM, ADHERENT.ADH_NOM;

R3
SELECT ADHERENT.*, CATEGORI.CAT_NOM
FROM ADHERENT, CATEGORI
WHERE CATEGORI.CAT_NUM=ADHERENT.ADH_CAT
ORDER BY CATEGORI.CAT_NOM, ADHERENT.ADH_NOM;

R4
SELECT ADHERENT.*
FROM ADHERENT
WHERE ADHERENT.ADH_NIV Not Like &quot;1&quot;
AND ADHERENT.ADH_CAT Not Like &quot;AA&quot;;

R5
SELECT CHEVAL.*
FROM CHEVAL
WHERE CHEVAL.CHE_SEXE=&quot;M&quot;
ORDER BY CHEVAL.CHE_ENCOL DESC;

R6
SELECT ADHERENT.*
FROM ADHERENT
WHERE ADHERENT.ADH_VILLE Not Like &quot;MARSEILLE&quot;
OR ADHERENT.ADH_NIV Not Like &quot;1&quot;;

R7
Normal que tu ne puisses pas trouver la solution, il y a un attribut qui n'est pas à sa place.
Explique-moi ce que fait DATE_ECH dans la table ADHERENT ?
Il manque, à mon avis une table REGLEMENT entre ADHERENT et CATEGORIE dans laquelle on aurait DATE_ECH et REGLE (O/N)

R8
SELECT CHEVAL.*, INSCRIPT.INS_STA
FROM CHEVAL, INSCRIPT
WHERE CHEVAL.CHE_NUM = INSCRIPT.INS_CHE
AND INSCRIPT.INS_STA=&quot;13&quot;;

R9
SELECT ADHERENT.ADH_NOM, Year(Date())-Year([ADH_NAISS]) AS AGE, INSCRIPT.INS_STA, CHEVAL.CHE_NOM, CHE_ENCOL
FROM ADHERENT, INSCRIPT, CHEVAL
WHERE ADHERENT.ADH_NUM = INSCRIPT.INS_ADH
AND CHEVAL.CHE_NUM = INSCRIPT.INS_CHE
AND INSCRIPT.INS_STA=&quot;15&quot;;

Explication R9 et en règle générale, dès lors qu'on utilise sur la ligne de commande SELECT un agrégat COUNT(), AVG(), SUM(), MAX() et MIN() ou bien qu'on réalise un calcul quelqu'il soit, on doit associer à l'un ou à l'autre un alias AS nom de l'attribut
Year(Date())-Year([ADH_NAISS]) AS AGE


Déjà, je suis aussi étonné que dans INSCRIPT il n'y ait pas de date DATE_INS ! Parce que en l'état impossible de gérer dans le temps ou d'année en année le suivi des stages.
@+
 
salut,

merci pour la vérification des requetes.
pour R1 je sais cela me fait bizarre aussi car je sais bien que dans la base les dates sont de 2001, mais le prof nous dit que cela fonctionne.
en ce qui concerne la R7, la je suis perdue je ne sais pas, la base c'est le prof qui nous la donnée afin de pouvoir faire l'exercice et il nous dit que chaque année les élèves arrive a faire les requetes.
donc j'attend que la prochaine fois en cours on corrige l'exercice.
 
Salut,
Pour R7, n'aurais-tu pas une info (règle de gestion) pour pouvoir la construire ?
L'énoncé ne te situe-t-il pas dans le temps ?
Autre hypothèse, les adhérents à jour de cotisation peuvent s'inscrire à un stage, pas les autres !
Purée, tu dois avoir un sacré prof de P10, bonjour l'angoisse  :laugh:
@+
 
salut,

j'ai scannée les feuille avec tout l'exercice mais il est trop gros meme compressé, si tu a uneadresse hotmail ouautre je peut te l'envoyer.
effectivement c'est l'angoisse, j'aime pas dire que les profs ne sont pas bon, mais lui na pas la patience pour nous expliquer ni rien d'un bon prof
 
Salut,

R7
SELECT ADHERENT.*
FROM CATEGORI, ADHERENT
WHERE CATEGORI.CAT_NUM = ADHERENT.ADH_CAT
AND ((2001-Year([ADH_NAISS])&gt;=18) AND CATEGORI.CAT_NOM=&quot;ENFANT A L'ANNEE&quot; OR ((2001-Year([ADH_NAISS])&gt;=18) AND CATEGORI.CAT_NOM=&quot;ENFANT AU TRIMESTRE&quot;));

Il faudrait modifier 2001 par Date() pour que la syntaxe soit correcte.
C'est la dernière ligne du document 5 qui donne la solution à la construction de la requête.
Puisque des adhérents inscrits en tant qu'enfant on 18 ans et plus.

@+
 
Retour
Haut