2015-04-05 82 views
0

Noob在此處添加SQL中的新列。所以我會在這一點上切入點。這是一個班級任務,我的教授自週四以來沒有回覆電子郵件。我試圖解決的問題是 -試圖通過減去一年

「編寫一個查詢,將從每張專輯的製作日期中減去一年,並將其標記爲RecordDate並顯示每個條目的專輯標題,製作日期和錄製日期在表格中,按專輯標題排序結果。「

下面是該表應該看起來像enter image description here

這裏是我使用的查詢(在課堂上給我認識的反覆插入,但他想要的東西)...

CREATE TABLE ALBUM(
ALBUM_ID char(4) UNIQUE NOT NULL, 
ALBUM_TITLE varchar(255), 
ALBUM_YEAR year, 
ALBUM_PRODUCER varchar(255), 

Primary Key(ALBUM_ID) 
); 

INSERT INTO ALBUM (ALBUM_ID, ALBUM_TITLE, ALBUM_YEAR, ALBUM_PRODUCER) 
VALUES ('A001', 'Awake', '1994', 'East West Record'); 

INSERT INTO ALBUM (ALBUM_ID, ALBUM_TITLE, ALBUM_YEAR, ALBUM_PRODUCER) 
VALUES ('A002', 'Moving Pictures', '1981', 'Anthem'); 

INSERT INTO ALBUM (ALBUM_ID, ALBUM_TITLE, ALBUM_YEAR, ALBUM_PRODUCER) 
VALUES ('A003', 'Damage', '2013', 'RCA REcords'); 

INSERT INTO ALBUM (ALBUM_ID, ALBUM_TITLE, ALBUM_YEAR, ALBUM_PRODUCER) 
VALUES ('A004', 'Continuum', '2006', 'Columbia Records'); 

這裏我用來啓動回答問題

ALTER TABLE ALBUM ADD RECORD_DATE INT; 
UPDATE ALBUM SET RECORD_DATE=(ALBUM_YEAR-1); 

這確實讓新的一列,並給出了什麼,我想到目前爲止,結果(還沒有得到到後來的面值t的問題)。但是,這是兩個不同的查詢...

因此,從SQL專家的建議,要達到他想要的,我必須寫多個查詢或可以在一個單一的查詢?也是我的數據類型好嗎?

不,我不是要求SQL來做到這一點。這不是「請爲我做我的廚房」。對不起,但它必須全部放在帽鎖中,因爲他想要那樣。

+0

我不認爲他正在尋找一個更新查詢或添加任何列的基表。只需一個帶有計算列的「選擇」查詢。 – 2015-04-05 22:14:30

+0

我投票結束這個問題作爲離題,因爲它明確要求不要求SQL答案,而是關於解釋分配規範。 – 2015-04-05 22:17:48

+0

馬丁史密斯也許我應該更具體。幫助需要查詢 - 是的,如果我沒有正確地做。另外,我不希望有人爲我完成整個事情。我想在這裏學習,下面的答案是有幫助的。我不希望我的整個任務完成。 – 2015-04-06 01:19:33

回答

2

安德魯導師並沒有要求你添加一個新的列或任何東西,他要求你提交的數據以特定的方式。

我們使用一些稱爲Database Normalization rules的特定規則將數據存儲在SQL Server中。

但是爲了以任何特定形式顯示數據,我們編寫了SELECT查詢,這些查詢從表中選擇數據,並且我們使用各種函數和方法在運行時處理數據並以所需的結構/格式/方式顯示數據。

同樣在這種情況下,對於您的要求,您不需要添加另一列只是做你的導師要求做的事情,它實際上違反了規範化的規則。所有你需要的是一個簡單的SELECT查詢,它將以所需的格式/方式顯示數據。

select查詢會像這樣簡單的事情....

SELECT [ALBUM_TITLE]  AS [Album Title] 
     ,[ALBUM_YEAR]  AS [Production Date] 
     ,[ALBUM_YEAR] - 1 AS [Record Date] 
FROM ALBUM 
ORDER BY [ALBUM_TITLE] 
1

根本不需要改變表格。你只是想選擇一個額外的列。我不會寫完整查詢你,但我會告訴你我是什麼意思:

SELECT ALBUM_TITLE, ALBUM_YEAR, ALBUM_YEAR - 1 AS RECORD_DATE 
-- rest of the query here --