2013-08-27 1 views
0
/*Displays employees’ last names and the Job Title and GROUP Job Title*/ 

USE [EXAMPLEDB] 
SELECT empLName 
FROM tblEmployee 

여기서 내가 혼란스러워하는 곳이 어디 직원 성을 포함하고 다른 직원의 직책을 포함 두 테이블을 사용하여 이렇게합니까?어떻게 GROUP BY

당신은 JOIN해야
--This Code Creates the Job Title Table-- 

CREATE TABLE [SHATTKudlerFineFoods].dbo.tblJobTitle 
(
jobJobID varchar (4) CONSTRAINT PK_jobJobID PRIMARY KEY Not Null, 
jobJobClass varchar (60) Not Null, 
jobTitle varchar (60) Not Null, 
jobDescription varchar (300) Not Null, 
jobStatus varchar (11) Not Null 
) 

--This Code Creates the Employee Table-- 

CREATE TABLE [SHATTKudlerFineFoods].dbo.tblEmployee 
(
empEmpID varchar (3) CONSTRAINT PK_empEmployeeID PRIMARY KEY Not Null, 
empLName varchar (20) Not Null, 
empFName varchar (15) Not Null, 
empAddress varchar (30) Not Null, 
empCity varchar (20) Not Null, 
empState varchar (2) Not Null, 
empZIPCode varchar (5) Not Null, 
empAreaCode varchar (3) Not Null, 
empPhoneNo varchar (8) Not Null, 
empGender varchar (1) Not Null, 
empDOB smalldatetime Not Null, 
empAge Tinyint Not Null, 
empHireDate smalldatetime Not Null, 
empNoOfExempt Tinyint Not Null, 
empMaritalStatus varchar (3) Not Null, 
empSalary money Not Null, 
empStoreID varchar (4) CONSTRAINT FK_strStoreID FOREIGN KEY REFERENCES 
tblStores(strStoreID) Not Null, 
empJobID varchar (4) CONSTRAINT FK_jobJobID FOREIGN KEY REFERENCES 
tblJobTitle(jobJobID) Not Null 
) 
+0

두 개 이상의 테이블에서 데이터를 가져 오려면 조인을 사용해야합니다. 각 직위에 대해 모든 직원의 이름이 필요하면 GROUP_CONCAT (표준 SQL의 일부가 아닌)에서 GROUP_CONCAT을 사용해야합니다. – bmorgan21

+0

대답과 관련이 없지만 ... 대신에 GROUP BY를 사용하면 'DISTINCT' 사용 ... GROUP BY'는 집계에 더 적합합니다. –

답변

5

테이블 :

SELECT jobTitle 
FROM tblJobTitle jt 
INNER JOIN tblEmployee e on e.JobID = jt.ID 
GROUP BY jobTitle 

JobIDjobTitle 기본 키 열을 참조 tblEmployee의 열입니다 (ID 또는

SELECT jobTitle 
FROM tblJobTitle 
GROUP BY jobTitle 

내 테이블입니다 뭐든간에)

0

이것은 그룹 기준이 아니며 대신에 조인입니다.

에 참여하기 위해, 다음과 같이 FROM 절에서 모든 테이블을 나열 : 조인 조건이있을 필요로

SELECT emp.empLName, job.jobTitle FROM tblEmployee emp, tblJob job 

참고이, 당신이 생각하고 싶은 일을하지 않습니다 두 테이블의 열에. 있는 그대로,이 선택은 모든 직원 이름에 대해 한 번씩 모든 직책을 출력합니다. 예를 들어 제목이 10 개이고 직원이 100 명이면 1000 개의 결과가 표시됩니다. tblJob 테이블에

조인 열이 tblEmployee 테이블에 id를 호출하면

emp_id이 전체 쿼리를 사용하는 것입니다 group by가 집계 결과에 사용되는

SELECT emp.empLName, job.jobTitle FROM tblEmployee emp, tblJob job WHERE emp.id = job.emp_id 

하는 것으로. 예를 들어 select가 직원 당 5 개의 행을 반환하고 열 중 하나에 평균이있는 행이 1 개만 필요하면 group by이 사용할 도구입니다.