从两个表中查询

时间:2012-04-07 03:31:11

标签: sql-server-2005

我有两张桌子: 的 nameTable

  • userName
  • 用户id
  • CLASSID

marksTable

  • 用户id
  • CLASSID
  • courseCode
  • 标记

我想显示所有相同classId 的学生的 userId,userName,courseCode,marks

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

但是这个查询给出了非常模糊的o / p。

假设“名称1 ”,ID NAME1 ,classId 10 跟随courseCode'C1,C2,C3',各自标记为'80,99 90' 现在我想在输入

时显示所有这些信息
exec mark__classId 10

1 个答案:

答案 0 :(得分:1)

你的选择应该更像这样,你只需要使用传入的参数。除了您应该使用JOIN而不是带有过滤器的CROSS JOIN

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