2011-01-13 36 views
0

我有两个表格:班级和教师。当有很多引用时,有效地查询表格

class 
id: int 
title: varchar(45) 

instructor 
id: int 
class_id: int 
name: varchar(45) 

比方说,有两个是与一个类关联导师:

INSERT INTO `class` VALUES(1, 'Class Number 1'); 
INSERT INTO `instructor` VALUES (1, 1, 'John Smith'); 
INSERT INTO `instructor` VALUES (2, 1, 'Jane Smith'); 

如何去查询的班级,指导老师姓名的名单?有两种方式我想查询,希望能有一个更有效的方法。

  1. 查询每类一次

    SELECT * FROM class; SELECT * FROM instructor WHERE class_id = ?;

  2. 查询它们与多排

    SELECT *同一类FROM class C,instructor I,其中c在一起。 id = iclass_id GROUP BY cid;

我希望通过以逗号分隔的教师来输出班级列表。

+0

有针对特定平台的方法;你能告诉我们你使用的是什么数据库吗? – 2011-01-13 16:17:44

+0

MySQL服务器5.0 – stan 2011-01-13 16:19:53

回答

1

在MySQL中,您可以使用GROUP_CONCAT聚合函数。请注意0​​。

在大多数情况下,您的两种方法后者更快,因为许多查询花费时间。

0
SELECT c.title, GROUP_CONCAT(i.name) 
FROM class c, instructor i 
WHERE c.id = i.class_id GROUP BY c.id;