2011-01-13 37 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;