私はちょうど私が就職の面接で尋ねられるなら、私はそれについて完全に無知ではないので、ちょうどSQLで少し遊んでいます。私の友人は最近インタビューで次の質問を聞かれました。彼はそれを手に入れることができませんでした。SQLをうまく知っていて、彼が知らなかった仕事の誰かに尋ねました。あなたは私のためにこの問題に答えることができますか?お願いします?標準化されていない列を別々のレコードに選択しますか?
* 問題 *
データベースの正規化(または正規化の欠如)は、多くの場合、開発者のための課題を提示しています。
は、3つのフィールドが含まれている従業員のデータベーステーブルを考えてみましょう:
EmployeeID
EmployeeName
EmailAddresses
ユニークな社員によって識別されるすべての従業員は、1つまたは複数のカンマで区切られた、@ rockauto.com電子メールアドレスを持っていること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]mpanyx.com'),
('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]
同じ名前の複数の人物(この場合は「フレッド」)が存在するため、EmployeeIDがカッコ内に含まれています。
クエリは、MySQLバージョン5.1.41互換構文で記述する必要があります。 ORDER BY EmployeeID ASC "
この問題では、単一のSQL SELECTクエリを送信する必要があります。あなたのクエリは、合理的な時間内に1000レコードのテーブルを処理できる必要があります。
これはひどいインタビューの質問です。 – bobwienholt
私たちは、select文を解析するためにphpを使用することを許可されていますか、またはその形式で直接クエリを引き出す必要がありますか? – squarephoenix
このデータベース構造を正規化する方法はより良い質問です^^ –