2011-04-29 61 views
0

如果我提供该场景的(简化)示例,则可以更好地理解我的问题。我有两张桌子,活动和课程。事件表包含EventID,CourseID和EventDate。课程表包含CourseID和CourseName。MYSQL:根据外键添加记录

我想添加一个新的事件。我明白,查询通常会如下所示:

INSERT INTO event 
(EventID,CourseID,EventDate) VALUES (NULL,'2','2011-03-01'); 

但相反,我想通过提供课程名称而不是CourseID更新事件。我会如何去做这件事?

编辑:显然没有办法只用MYSQL查询来做到这一点。我试图在PHP中执行此操作,并尝试允许用户更新事件记录。显然,用户可以方便地根据课程的名称添加新事件,最好使用下拉框。

感谢

+0

通常它是在sql之外完成的,在显示名称但返回ids的表单中有select选项,为什么在sql中需要它? – piotrm 2011-04-29 17:40:39

+0

我实际上正在试图用PHP来做,我只是想在mysql中会有一个查询。我会更新我的帖子以反映这一点 – Antonym 2011-04-29 17:47:15

回答

0
INSERT INTO Event (EventID, CourseID, EventDate) 
SELECT NULL, C.CourseID, '2011-03-01' 
FROM Course C 
WHERE C.CourseName = 'Course Name Goes Here'; 
0

这其中一件事,你可以尝试。尽管您可能希望在查询中包含日期或其他方式,以确保您唯一识别您正在查找的记录。

您可以考虑的另一件事是存储事件ID,当您调出您希望用户更新的事件的引用时。然后你会确保你只更新你打算的记录。

update Event set .... 
    where courseID=(
    select courseID from Course 
     where CourseName like '' 
)