2011-04-29 6 views
0

Вопрос может быть лучше понят, если я предоставил (упрощенный) пример сценария. У меня есть две таблицы: «Событие и курс». Таблица событий содержит EventID, CourseID и EventDate. В таблице курса содержатся CourseID и CourseName.MYSQL: добавление записей на основе внешних ключей

Я хочу добавить новое событие. Я понимаю, что запрос обычно будет выглядеть следующим образом:

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

Но вместо этого я хотел бы обновить событие, предоставляя CourseName вместо CourseID. Как мне это сделать?

Редактирование: По-видимому, нет способа сделать это только с запросом MYSQL. Я пытаюсь сделать это на PHP и пытаюсь разрешить пользователю обновлять запись о событии. Очевидно, пользователю было бы удобно добавить новое событие, основанное на названии курса, желательно с раскрывающимся списком.

Благодаря

+0

Обычно это делается за пределами sql, с опциями выбора в формах, отображающих имена, но возвращающими идентификаторы, зачем вам это нужно в sql? – piotrm

+0

Я на самом деле пытаюсь сделать это с PHP, я просто подумал, что в mysql будет запрос для него. Я обновляю свой пост, чтобы – Antonym

ответ

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

Это одна одна вещь, которую вы могли бы попробовать. Хотя вы можете указать дату в своем запросе или какой-либо другой способ убедиться, что вы однозначно идентифицируете запись, которую ищете.

Еще одна вещь, о которой вы могли подумать, - это хранить идентификатор события, когда вы вызываете ссылку на событие, которое вы хотели бы обновить. Затем вы убедитесь, что обновляете только те записи, которые вы намереваетесь сделать.

update Event set .... 
    where courseID=(
    select courseID from Course 
     where CourseName like '' 
) 
Смежные вопросы