2011-01-13 2 views
0

클래스와 강사라는 두 개의 테이블이 있습니다. 나는 강사 이름을 가진 클래스의 목록을 쿼리에 대해 어떻게 가야합니까많은 참조가있을 때 테이블을 효율적으로 쿼리하십시오.

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

:

class 
id: int 
title: varchar(45) 

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

는의 한 클래스와 연관된 두 강사가 가정 해 봅시다? 쿼리하는 것에 대해 생각한 두 가지 방법이 있었고보다 효율적인 방법을 원했습니다.

  1. 쿼리 한 번 모든 클래스 class FROM

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

  2. 쿼리 함께 class C, instructor I, c FROM

    SELECT * 복수의 열에서 동일한 클래스로. id = i. class_id GROUP BY c. id;

강사가 쉼표로 구분 된 클래스 목록의 출력을 기대하고 있었던 것.

+0

이에 대한 플랫폼 별 접근법이 있습니다. 어떤 데이터베이스를 사용하고 있는지 알려주실 수 있습니까? –

+0

MySQL 서버 5.0 – stan

답변

1

MySQL에서는 GROUP_CONCAT 집계 함수를 사용할 수 있습니다. these notes에 유의하십시오.

대부분 두 가지 방법 중 두 번째 방법은 많은 쿼리에 시간이 소요되므로 더 빠릅니다.

+0

고마워요, 이것은 제가 찾고 있던 것이 었습니다. – stan

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