Pb de jointure - SQL/NoSQL - Programmation
Marsh Posté le 27-03-2008 à 16:14:24
revois la structure de ta table "mentions" : visiblement elle n'a pas de clé primaire. créé en une, puis met la en clé étrangère de ta table "etudiant" et fais ta jointure dessus. ça marchera beaucoup mieux
Marsh Posté le 27-03-2008 à 19:00:06
Merci pour ta réponse, mais je pense quel e problème ne vient pas. C'est le fait que la note ne soit pas remplie qui pose le problème au niveau de la jointure. Je voudrai que lorsqu'il n'y a pas de note, la ligen soit tout de même affichée, même sans mention.
Merci d'avance
Marsh Posté le 28-03-2008 à 02:12:44
Je pige pas trop ce qui coince.
Sur le coup j'ai pensé à un problème de sens dans ta jointure (pour la seconde requête) mais non, c'est bien un left qu'il te faut...
Mon test :
Code :
|
Le résultat :
|
(le right outer join marche aussi, sauf que si une note n'a pas de mention, alors t'as pas de ligne...)
Marsh Posté le 31-03-2008 à 11:17:37
Merci pour ta réponse.
En fait, c'est au résultat de ta seconde requête que je veux arriver.
En fait, je crois que ce qui déconne chez moi, c'est que je n'ai pas "NULL" comme valeur mais pas de valeur du tout.
Du coup ça me donne ça comme résultat et non ton résultat :
id note libelle
--------------------------------------- ----------- --------------------------------------------------
1 10 Très bien
2 9 Bien
4 7 Assez bien
5 6 Assez bien
7 4 NULL
8 3 NULL
10 1 NULL
11 0 NULL
Est-ce qu'il y a un moyen de contourner ce problème (sans rajouter "NULL" dans mes champs vides...) ?
Merci d'avance
Marsh Posté le 31-03-2008 à 12:08:56
"pas de valeur du tout", c'est justement NULL.
je dirais plutôt que ton problème, c'est que t'as une donnée (genre chaîne vide ou 0...)
Marsh Posté le 31-03-2008 à 16:13:36
ok, merci.
Mais dans ce cas si j'ai une valeur (chine vide ou 0), pourquoi est-ce que la ligne n'apparait pas avec le left join ?
Désolé si certaines de mes questions ne sont pas très claires...
Merci d'avance
Marsh Posté le 31-03-2008 à 17:49:46
parceque le left join ne permet de retrouver des lignes que si elles n'existent pas, ou sont identiques. si elles sont différentes, il ne les retourne pas, et c'est normal
Marsh Posté le 31-03-2008 à 18:48:02
ok
Et est-ce ce qu'un autre type de jointure que le left join pourrait me donner ce que je recherche ?
Marsh Posté le 31-03-2008 à 20:51:12
non
tu dois faire en sorte de traîter tes valeurs chaîne vide et zéro comme si elles n'existaient pas.
dans quelle table tu as ces lignes ?
Marsh Posté le 01-04-2008 à 15:30:25
c'est pas juste un left outer join a la place de left join qu'il lui faudrait?
Marsh Posté le 01-04-2008 à 18:39:27
"left join" est juste une version condensée de la syntaxe standard SQL "left outer join", ça ne change rien au comportement
Marsh Posté le 27-03-2008 à 16:01:59
Bonjour,
j'ai un problème sur une requête. Je cherche à faire une jointure entre plusieurs tables, mais je n'arrive pas à obtenir le résultat souhaité.
En fait, mon problème vient du fait que le champ sur lequel je fais la jointure peut être vide.
j'ai également essayé de cette façon
Dans les 2 cas, je ne récupère que les données ayant une note, alors que la note n'est pas toujours remplie. Je voudrai juste que la mention soit ajoutée lorsque la note est renseignée.
Merci d'avance pour votre aide