{SQL] Soucis avec une requête de jointures

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : {SQL] Soucis avec une requête de jointures

Re: {SQL] Soucis avec une requête de jointures

par yann18 » 17 nov. 2014, 13:29

tu peux ignorer mon dernier poste.
En fait la 1ère requête doit filtrer que les étudiants ayant participé à l'épreuve 4 c-a-d numepr=4.La requête complète donnera:
SELECT E.nometu,E.prenometu, A.note FROM etudiants AS E, avoir_note AS A
WHERE E.numeroEtu=A.numeroEtu  AND numepr=4
AND note>(
         SELECT A.note FROM etudiants AS E, avoir_note AS A
         WHERE  E.numeroEtu=A.numeroEtu  AND E.nometu='dupont' AND E.prenometu='luc'  AND numepr=4
   )

Re: {SQL] Soucis avec une requête de jointures

par yann18 » 17 nov. 2014, 13:03

faudrait déjà vérifier que la sous requête fonctionne c-a-d sélectionner la note attribuée à dupont luc lors de l'épreuve numéro 4.Je m'en suis aperçu que j'ai dupliqué la clause E.numeroEtu=A.numeroEtu dans la sous requête (mais cela devrait pas changé le résultat)
SELECT A.note FROM etudiants AS E, avoir_note AS A
WHERE  E.numeroEtu=A.numeroEtu  AND E.nometu='dupont' AND E.prenometu='luc'  AND numepr=4
En utilisant la jointure évoluée à l'aide de la commande JOIN, la requête précédente devient:
SELECT A.note from etudiants as E JOIN avoir_note as A 
ON  E.numeroEtu=A.numeroEtu  WHERE E.nometu='dupont' AND E.prenometu='luc'  AND numepr=4 
ces requêtes donnent-elles la note de luc dupond à l'épreuve 4?

Re: {SQL] Soucis avec une requête de jointures

par seyrinian » 17 nov. 2014, 02:12

Merci pour la réponse, j'ai testé la commande malheuresement la réponse donne ceci, ce qui n'est toujours pas les 4 lignes recherchées^^
Par curiosité comment utiliserais tu les join, j'ai vu ça en cours mais je ne saisis pas bien comment l'utiliser. Sinon grâce à ta commande la réponse semble tout de même se préciser, mais j'avoue être perdu, j'ai du mal à réfléchir à d'autres possibilitées.
nometu | prenometu | note
-------------+-----------+------
roblin | lea | 15
bagnole | sophie | 11
bury | marc | 15
vendraux | marc | 16
dewa | leon | 11
roblin | lea | 12
macarthur | leon | 12
bagnole | sophie | 15
vendraux | marc | 11
vendermaele | helene | 13
marke | loic | 19
godart | jean-paul | 14
beaux | marie | 14
turini | elsa | 11
ephyre | luc | 20
leclercq | jules | 12
dupont | luc | 11
godart | jean-paul | 11
beaux | marie | 12
torelle | elise | 20
pharis | pierre | 12
(21 lignes)

Re: {SQL] Soucis avec une requête de jointures

par yann18 » 17 nov. 2014, 01:38

bonjour,
il faut spécifier la colonne de jointure entre les 2 tables.La colonne de jointure ici est le numéro étudiant(numeroEtu)
select E.nometu,E.prenometu, A.note from etudiants as E, avoir_note as A
where E.numeroEtu=A.numeroEtu  AND note>(select A.note from etudiants as E, avoir_note as A 
where  E.numeroEtu=A.numeroEtu  AND E.nometu='dupont' and E.prenometu='luc' and E.numetu=A.numetu and numepr=4 ); 
De nos jours on utilise couramment les jointures évoluées (SQL2) pour joindre les tables(ommande JOIN).Dans ton cas c'est du SQL1.

{SQL] Soucis avec une requête de jointures

par seyrinian » 17 nov. 2014, 00:44

Bonjour, je suis étudiant en informatique. J'ai un problème pour un exercice de BDD.
Je vous présente rapidement le propos, je possède:
Une table étudiants contenant le numéro,le nom et prénom de l'étudiant
Une table avoir_note contenant le numéro étudiant,les numéros d'épreuves et les note en fonction du numéro d'étudiant et du numéro d'épreuve.


La question est d'afficher le nom des étudiants qui ont ) l'épreuve 4 une note supérieur à celle obtenue par Dupont Luc à l'épreuve 4.

J'ai réalisé la requète suivante:

select E.nometu,E.prenometu, A.note from etudiants as E, avoir_note as A where (note>(select A.note from etudiants as E, avoir_note as A where (E.nometu='dupont') and (E.prenometu='luc') and (E.numetu=A.numetu) and (numepr=4)));

seulement elle n'affiche pas les résultats corrects. J'obtiens le résultat affiché en dessous alors que la réponse devrait contenir 4 ligne seulement. J'ai du mal écrire la requète. Pourriez-vous m'aider svp?

Merci

nometu | prenometu | note
-------------+-----------+------
roblin | lea | 15
macarthur | leon | 15
minol | luc | 15
bagnole | sophie | 15
bury | marc | 15
vendraux | marc | 15
vendermaele | helene | 15
besson | loic | 15
godart | jean-paul | 15
beaux | marie | 15
turini | elsa | 15
torelle | elise | 15
pharis | pierre | 15
ephyre | luc | 15
leclercq | jules | 15
dupont | luc | 15
marke | loic | 15
dewa | leon | 15
roblin | lea | 11
macarthur | leon | 11
minol | luc | 11
bagnole | sophie | 11
SUITE