2014-09-20 4 views
0

counselor, clientroom을 참조하는 하나의 appointment 테이블이 있습니다. 이 세 테이블의 데이터를 appointment 테이블에 삽입해야합니다. 다음과 같이 나는 appointment 테이블을 생성 : 나는 다른 세 개의 테이블에 데이터를 삽입 한 후MySql에서 세 개의 다른 테이블을 참조하는 테이블에 데이터를 삽입 한 다음 해당 데이터를 선택하려면 어떻게합니까?

create table appointment(
    AppointmentID int default next value for NDFCID primary key, 
    CounselorID int not null references counselor, 
    ClientID int not null references client, 
    RoomNumber int not null references room, 
    AppointmentDate date, 
    StartTime time(0), 
    Duration varchar(50) 
); 

, 나는 약속에 데이터를 삽입 할 이것은 내가 지금까지 무엇을 가지고 :

insert into appointment(counselor.firstName, client.firstName, room.RoomName, AppointmentDate,StartTime,Duration) 
    values 
    ('Audrey', 'Sarah', 'Clear sky', '10/1/2014', '8:00:00', '90'); 

인가 거기에 내가 문자열 이름을 삽입에 하드 코딩하지 않아도 그냥 테이블에서 그들을 참조 할 수있는 방법이 있나요? appointment에는 많은 값을 삽입하고 싶습니다. 삽입 한 후에는 표시 할 데이터를 어떻게 선택합니까? insert 문 내에서 모두 선택하여 가입해야합니까, 아니면 나중에 올 것인가?

+0

'INSERT' 문은 올바른 구문이 아닙니다. 'insert into appointment' 다음에 나오는리스트는 그 테이블에있는 컬럼의리스트로되어있다. 다른 테이블의 필드를 가리키는 것은 의미가 없다. – Barmar

+0

데이터를 삽입하고 삽입 ID를 사용하여 마지막 INSERT 문을 생성하는 SQL 스크립트를 만들어야합니다. – user4035

답변

0

SELECT 문을 사용하면 특정 이름의 다른 테이블에서 ID를 가져올 수 있습니다.

INSERT INTO appointment (CounselorID, ClientID, RoomNumber, AppointmentDate, StartTime, Duration) 
SELECT c.id, cl.id, r.roomNumber, "10/1/2014", "8:00:00", "90" 
FROM counselor AS c 
CROSS JOIN client AS cl 
CROSS JOIN room AS r 
WHERE c.firstName = "Audrey" 
AND cl.firstName = "Sarah" 
AND r.roomName = "Clear sky" 
+0

고마워요! 그것은 그것을 잘 삽입했다. 하지만 어떻게 삽입 된 데이터를 선택할 수 있습니까? 의미, 나는'c.firstName','cl.firstName','r.roomName'을'appointmentDate','StartTime','Duration'으로 표시하고 싶습니다. 'select * from appointment'를했을 때, 이름보다는 ID를 반환했습니다. – casperson

+0

물론 JOIN을 사용하여 관련 테이블의 정보를 결합하십시오. – Barmar