我正在玩一些SQL,所以如果我在求职面试中被问到,我并不完全无知。我的朋友最近在一次采访中被问到了下面的问题,他无法得到它,并且我问了一个在工作中知道SQL并且他不知道的人。你们能为我回答这个问题,然后解释它是如何工作的?请?将未规范化的列选择为单独的记录?
* 问题 *
数据库标准化(或缺乏规范化的)往往呈现为开发人员提出了挑战。
考虑员工的数据库表包含三个字段:
EmployeeID
EmployeeName
EmailAddresses
每一位员工,由唯一标识雇员,可能有一个或更多的逗号分隔,@ rockauto.com电子邮件地址(ES) EmailAddresses字段。
数据库表定义如下:
CREATE TABLE Employees
(
EmployeeID int UNSIGNED NOT NULL PRIMARY KEY,
EmployeeName varchar(50) NOT NULL,
EmailAddresses varchar(40) NOT NULL ,
PRIMARY KEY(EmployeeID)
);
出于测试目的,这里是一些样本数据:
INSERT INTO Employees (EmployeeID, EmployeeName, EmailAddresses) VALUES
('1', 'Bill', '[email protected]'),
('2', 'Fred', '[email protected],[email protected]'),
('3', 'Fred', '[email protected]'),
('4', 'Joe', '[email protected],[email protected]');
你的任务是写一个单一的MySQL SELECT查询,将呈现以下输出为上面的采样数据:
Employee EmailAddress
Bill [email protected]
Fred (2) [email protected]
Fred (2) [email protected]
Fred (3) [email protected]
Joe [email protected]
Joe [email protected]
请注意是因为存在多个具有相同名称的人(在本例中为“Fred”),EmployeeID包含在括号中。
您的查询需要用MySQL 5.1.41版本的兼容语法编写。您应该假定使用标准数据库升序排序来完成排序:“ORDER BY EmployeeID ASC”
对于此问题,您需要提交一个SQL SELECT查询。您的查询应该能够在合理的时间内处理一个包含1000条记录的表格。
只是我的看法...这是一个糟糕的面试问题。 – bobwienholt 2012-04-20 16:50:02
我们允许使用php来解析select语句,或者查询是否必须直接以该格式拉取 – squarephoenix 2012-04-20 16:53:08
更好的问题是如何规范化这个数据库结构^^ – 2012-04-20 16:53:14