Voici ma requête:

ALTER PROCEDURE sp_logdetails
(
    @bookid INT
)
AS
BEGIN
    SELECT *
    FROM book_lending
    LEFT OUTER JOIN student ON student.id = book_lending.id
    WHERE bookid = @bookid
END

Lorsque j'exécute la requête ci-dessus, elle n'affiche que les données book_lending, pas les données des étudiants. Voici ma capture d'écran

Et ce sont mes données de table des élèves capture d'écran :

Puis-je savoir, comment obtenir les données des élèves dans quel bookid particulier. J'avais l'habitude de définir la clé étrangère pour book_lending id sur Student id.

Quelqu'un peut-il me guider pour résoudre ce problème?

Merci,

0
pcs 5 janv. 2016 à 15:11

2 réponses

Meilleure réponse

Vous avez mélangé les champs dans la jointure:

LEFT OUTER JOIN student ON student.id = book_lending.id

Vous essayez de faire correspondre un étudiant pour un prêt de livre par pièce d'identité des deux - ce qui est faux.

Changez le code en ceci et vous commencerez à obtenir des résultats:

SELECT *
FROM book_lending
LEFT OUTER JOIN student ON student.id = book_lending.studentid
WHERE bookid = @bookid
0
Shadow Wizard is Ear For You 5 janv. 2016 à 12:28

Sélectionnez les colonnes spécifiques de la table jointe dans votre liste de sélection. Ici bl et s sont des alias de table pour une meilleure réductibilité. Vous devez sélectionner les colonnes souhaitées et les inclure dans votre liste de sélection. ci-dessous la requête sélectionnera toutes les colonnes des deux tables.

SELECT bl.*, s.*
FROM book_lending bl
LEFT OUTER JOIN student s ON s.id = bl.id
AND bl.bookid = @bookid
2
Rahul 5 janv. 2016 à 12:17