0
/*Displays employees’ last names and the Job Title and GROUP Job Title*/

USE [EXAMPLEDB]
SELECT empLName
FROM tblEmployee

这是我感到困惑的地方,如何使用包含员工姓氏和另一个员工职位的两个不同表来执行此操作?

SELECT jobTitle
FROM tblJobTitle 
GROUP BY jobTitle

这些是我的表:

--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
)
4

2 回答 2

5

你应该JOIN表:

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

JobID是 中的一列tblEmployee,它被引用到jobTitle主键列(ID或其他)

于 2013-08-27T04:18:07.983 回答
0

这不是 group by,而是 join。

为了加入,列出 FROM 子句中的所有表,如下所示:

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

注意这不会做你想要的,因为需要在两个表中的列上有一个连接条件。照原样,此选择将​​为每个员工姓名提供每个职位的输出一次。例如,如果有 10 个职位和 100 名员工,您将获得 1000 个结果。

id如果在表中调用连接列tblEmployee,并且emp_idtblJob表中,这是要使用的完整查询:

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

请注意,group by用于聚合结果。例如,如果一个选择返回每个员工 5 行,而您只想要 1 行,其中一列具有平均值,group by则该工具就是要使用的工具。

于 2013-08-27T04:22:54.960 回答