2012-06-17 223 views
-1

我在SQL初学者,可以请你帮我写一个查询:SQL连接查询

  • 找到谁也是一门课程的参与者讲师的名字
  • 找到4个疗程最参与者

的表是:

- Lecturer [LecturerID (PK), name] 
- Course [CourseId (PK), LecturerID, name] 
- Participant [ParticipantID (PK), CourseID(PK)] 

谢谢!

+4

听起来像功课。你有什么尝试? –

+0

嗯,我想了解如何加入等工作。我想编写一个简单的系统来学习SQL,并且我已经有了这个问题的堆栈... – Devel

+0

这些不是我选择开始学习连接的两个查询。更像是两个看看你是否学过它们。我也确定,只是发送给你的SQL不会教你任何东西。 –

回答

2

如果您想了解连接如何工作,那么对我们来说帮助您自己创建SQL将会更加有益。为联接的基本格式是这样的:

SELECT * 
FROM table1 
JOIN table2 ON table1.joinID = table2.joinID 

我会在3个步骤处理这个:

  1. 写一个基本的SELECT语句将返回连接表数据
  2. 修改SQL只显示“也是参加一门课程的讲师的名字”
  3. 从步骤1的基本SELECT语句开始,修改SQL以仅显示“参加人数最多的4门课程”

这些将最终成为2个不同的查询。

如果你想从它开始,并且卡住了,我们可以帮助你,但如果我们只是给了你SQL,它不会帮助你学习它。尝试写一点它,并发布你有什么时,你卡住了。

+0

要做第一项任务,是否正确?从讲师 选择名称加入上Course.LecturerID = Lecturer.LecturerID 课程Participant.CourseID = Course.CourseID 其中Lecturer.LecturerID = Participant.ParticipantID – Devel

+1

这是一个良好的开端加入参与者。你有可以玩的工作数据库吗?我正在创建一个SQLFiddle,你可以尝试测试你的查询。另外,我猜这里还有一个'学生'表?现在,我们必须假设'PARTICIPANT'表包含对第四个表格的引用。 – Seth

+1

我必须去一点点,但很快就会回来看看你在做什么。这里是一个SQLFiddle,您可以在其中测试您的查询,并开始玩弄编辑它: http://sqlfiddle.com/#!3/59788/1 – Seth

2
select L.name from lecture L join participant P on L.id=P.id 

select C.cid from course C join participant P 
ORDER BY P.cid DESC 
LIMIT 4; 

希望它可以帮助你

+0

不应该有计数声明吗? – Devel

+0

对不起,应该算count(p.cid)DESC LIMIT 4.Thanks – vijay