2016-06-09 5 views
0
CREATE TABLE IF NOT EXISTS music 
(
songname varchar(98) DEFAULT NULL, 
songartist varchar(29) DEFAULT NULL, 
songalbum varchar(60) DEFAULT NULL, 
albumID  INT, 
songlength decimal(6,2) DEFAULT NULL, 
songgenre varchar(18) DEFAULT NULL, 
songyear int DEFAULT NULL, 
songplays INT DEFAULT NULL 
); 

CREATE TABLE IF NOT EXISTS albumList 
(
    ID_num INT NOT NULL AUTO_INCREMENT, 
    albumName VARCHAR(30), 
    PRIMARY KEY (ID_num) 
); 

저는 맨손으로, 저는 여전히 MySQL을 처음 접했습니다. 이것은 IT201 클래스의 프로젝트입니다. 질문, 단어에 대한 단어입니다 :MySQL - 테이블을 업데이트하고 다른 테이블에서 데이터 삽입하기

Update the music table to set the albumID number to the corresponding album ID number from the new album table. (Hint: use a nested select statement.)

나는 문제없이, 난 정말이 언어를 즐길 전에이 같은 물건을했습니다,하지만 난 내가 잘못 뭘하는지 알아낼 수 없습니다. 내가 생각할 수있는 UPDATE의 모든 반복을 시도했다. 심지어 INSERT 명령을 시도해 보았다. 테이블에 조인했다. 나는 단지 모른다. 여기 내 최신 시도 중 하나의 샘플입니다

UPDATE music 
SET 
music.albumID = (SELECT albumList.albumName FROM albumList) 

는 분명 내가 데이터를 구성하는 두 테이블에서 INSERT 문을 포함하지 않은가, 나는이 질문에 대한 무관 느꼈다. table.music에는 약 1000 행의 항목이 있고 table.albumList에는 약 200 개의 항목이 있다는 것을 이해하십시오.

아이디어는 albumList가 고유 한 앨범 이름을 나타내는 표이고 음악은 반복되는 곡이 많다는 것입니다. music.albumID를 albumList.ID_num에 맞게 업데이트하려고합니다. 나는 이것이 JOIN 또는 foreign keys/referencing에서 수행되지 않는다는 인상 아래에있다. 다음 질문은 이들을 참조하는 외래 키를 추가하는 것이기 때문이다. 그래서 나는 질문과 같이 힌트로, 전에 UPDATE와 중첩 된 SELECTS로 이것을 할 수 있다고 가정합니다.

+0

당신의 업데이트가 작동하지 않습니다 : 나는 미래에 SOF를 검색하고자 다른 사람을 위해 그것을 게시 할 거라고 생각했다. 그 subselect는 여러 행의 데이터를 리턴 할 것이고 결과 세트를 단일 필드에 할당 ('=') 할 수 없습니다. 당신은 update의'join' 문법을 조사 할 필요가있다 ... –

+0

당신은 당신의 update 문에서 join을 할 필요가있다. Music.albumID = AL.ID_num from music inner join 앨범 목록 AL.albumName = music.songalbum (숙제이기 때문에 정확한 질문은하지 않고 아이디어 만 제공합니다.) –

+0

고맙습니다. , 이것은 확실히 숙제입니다, 저는 강사 (그리고 당신)가 정확한 답을주지 않는 것을 좋아합니다. 이전에 JOIN을 시도했지만 작동하지 않았지만 올바른 경로로 나를 보내 주셔서 감사합니다. :) 서식을 편집 해 주셔서 감사합니다. @Barranka – KocLobster

답변

0

music의 songalbum에는 albumname (앨범 크기가 다르므로이 값이 정확하지 않을 수 있음)과 동일한 데이터가 포함되어 있다고 가정하고 있지만 다음 SQL이 도움이됩니다. 그것은 songalbum 내가 당신의 남자 '의 도움으로 믿는 albumName

UPDATE music SET albumID = (SELECT a.ID_Num FROM albumList a 
           Join music m on m.songalbum = a.albumName) 
+0

나는 이와 비슷한 것을 시도했지만 UPDATE 명령 아래에서 SELECT 문 내부에 JOIN 명령을 사용할 때마다 항상 오류가 발생합니다. 오류 : # 1093 - 당신은 절 'UPDATE 음악 SET에서 업데이트 대상 테이블 '음악'을 지정할 수 없습니다 ALBUMID = (music.songalbum = albumList.albumName에서 음악을 가입 albumList FROM albumList.ID_Num를 선택) ' 이것은 내가 두뇌 방구가 있다는 것을 깨닫게했고 이전의 시도를 잘못하고있었습니다.나는 songlbum이 바보처럼 albumName과 일치하는지 확인하지 못했습니다. – KocLobster

0

, 나는 대답을 해결 일치합니다 albumList에서 ID_NummusicalbumID을 설정합니다. 나는 처음부터 항상 생각했듯이 JOIN 문을 요구하지 않았습니다. 과제는 오늘 정오 (10 분 후)까지이며 랩탑의 배터리는 매우 가까이에 있으므로 내 대답을 확인하는 데 많은 시간을 할애하지 못했지만 필자가 확인한 바에 따르면 정답 (그리고 그 대답이 무엇인지 힌트를주는 것).

UPDATE music SET albumID = (SELECT albumList.ID_Num FROM albumList WHERE albumList.albumName = music.songalbum)

관련 문제