Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ma requête est-elle correcte ?

Sujet résolu
20 mai 2018 à 18:38:35

Bonjour,

J'ai une table qui se nomme collabo dans cette entité j'ai 3 colonnes qui sont CodeA, IdentM, IdentI

Le but est d'apparaître l'identifiant de la musique (IdentM) ainsi que l'Identifiant de l'Instrument qui sont reliés à d'autres entités.

J'ai l'impression qu'il y a un soucis avec le IdentI il l'affiche 2 fois...

Select * from musicien as c, collabo as a, instrument as e where c.IdentM = a.IdentM and e.IdentI = a.IdentI Order BY 1 

Avez-vous une idée ?

Merci d'avance

  • Partager sur Facebook
  • Partager sur Twitter
21 mai 2018 à 2:27:33

Salut,
Probablement parce que IdentI est présent à la fois dans instrument et collabo... et comme tu demandes d'afficher tout (*), il affiche celui d'instrument et celui de collabo.
Si je puis me permettre quelques conseils :
- évite d'utiliser * de manière générale, même si c'est plus long c'est mieux d'écrire directement les champs ce que tu souhaites, ça évite des soucis et c'est plus lisible.
- évite les jointures dans le WHERE. Il y a des INNER JOIN, LEFT JOIN, RIGHT JOIN et autres, autant s'en servir et libérer le WHERE pour d'autres choses. Là encore c'est plus lisible.
- évite d'appeler tes tables par des lettres l'alphabet... ou du moins, met des lettres parlantes."m" ou "mus" aurait été mieux pour "musicien" que "c". Toujours pour la lisibilité.
- Tu devrais te former plus en SQL. Il y a des cours sur OC qui pourraient t'intéresser.
Voici la solution que je propose :
SELECT mus.IdentM, mus.NomM, mus.PrenomM, mus.SexeM, mus.NaissM, col.CodeA, col.IdentM, col.IdentI, ins.NomI
FROM musicien mus
INNER JOIN collabo col ON mus.IdentM = col.IdentM
INNER JOIN instrument ins ON col.IdentI = ins.IdentI
ORDER BY mus.IdentM;

-
Edité par _Florent_ 21 mai 2018 à 2:28:28

  • Partager sur Facebook
  • Partager sur Twitter
Contrôleur programmeur des finances publiques depuis le 01/10/18
22 mai 2018 à 13:59:49

Hello,

Merci à toi Florent pour toutes ces précisions.;)

  • Partager sur Facebook
  • Partager sur Twitter