2012-04-07 2 views
0

J'ai 2 tables: NameTablerequête à partir de deux tables

  • userName
  • userId
  • CLASSID

marksTable

  • userId
  • CLASSID
  • courseCode
  • marques

je veux afficher userId, userName, courseCode, marques de tous les élèves ayant même identificateur de classe.

create proc mark__classId 
@classId int 
as 
select marksTable.courseCode, marksTable.userId, marksTable.marks, nameTable.userName 
from marksTable, nameTable 
where 
marksTable.classId = nameTable.classId 

mais cette requête a donné une très vague o/p.

Suppose "nom1" avec id NAME1 avec identificateur de classe suit courseCode 'C1, C2, C3' avec des marques respectives '80, 99,90' maintenant je veux afficher toutes ces informations lorsque je donner la saisie comme

exec mark__classId 10 

Répondre

1

Votre sélection devrait être plus comme ceci, vous avez juste besoin d'utiliser vos paramètres entrants. Aussi bien que vous devriez utiliser un JOIN au lieu d'un CROSS JOIN avec un filtre

SELECT marksTable.courseCode, marksTable.userId, marksTable.marks, nameTable.userName 
FROM marksTable 
JOIN nameTable 
    ON marksTable.classId = nameTable.classId 
WHERE marksTable.classId = @classId 
+0

remercie M. justin. J'ai une autre question: comment filtrer ces userId pour lesquels il n'y a pas d'entrée dans marksTABLE i.e leurs marques ne sont pas encore allouées. quand je cours le code ci-dessus, j'ai obtenu le résultat vague dû à ces userID qui n'ont pas d'entrées dans marksTABLE. –

+0

@nischalinn Ajoutez simplement ceci à la fin de votre WHERE: ET marksTable.userId IS NOT NULL –