2014-09-20 117 views
0

我有一個appointment表引用三個其他表:counselor,clientroom。我需要將這三個表中的數據插入到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。一旦我插入,我將如何選擇要顯示的數據?我是否應該在插入聲明中選擇並加入所有內容?

+0

您的INSERT語句甚至不是有效的語法。 「insert into appointment」後面的列表應該是該表中列的列表,從其他表中指向字段是沒有意義的。 – Barmar 2014-09-20 18:18:09

+0

您需要創建一個sql腳本,它將插入數據並使用insert id生成最後一條INSERT語句 – user4035 2014-09-20 18:21:13

回答

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'。當我從'預約'中選擇*時,它返回了ID而不是名稱。 – casperson 2014-09-21 18:34:23

+0

當然,使用JOIN合併來自相關表的信息。 – Barmar 2014-09-22 18:29:35

相關問題