2014-09-20 35 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

相关问题