2011-04-29 3 views
0

Ma question pourrait être mieux comprise si je fournissais un exemple (simplifié) du scénario. J'ai deux tables, Événement et Cours. La table d'événements contient EventID, CourseID et EventDate. La table Course contient CourseID et CourseName.MYSQL: Ajout d'enregistrements basés sur des clés étrangères

Je voudrais ajouter un nouvel événement. Je comprends que la requête serait normalement comme suit:

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

Mais au lieu que je voudrais mettre à jour l'événement en fournissant le courseName au lieu de CourseID. Comment ferais-je cela?

Éditer: Apparemment, il n'y a pas moyen de le faire avec juste une requête MYSQL. J'essaye de faire ceci en PHP et essaye d'autoriser un utilisateur à mettre à jour l'enregistrement d'événement. Évidemment, il serait pratique pour l'utilisateur d'ajouter un nouvel événement basé sur le nom du cours, de préférence avec une liste déroulante.

Merci

+0

Habituellement, cela se fait en dehors de sql, avec des options de sélection dans les formulaires qui affichent des noms mais qui renvoient des identifiants, pourquoi en avez-vous besoin en SQL? – piotrm

+0

Je suis en train d'essayer de le faire avec PHP, j'ai juste pensé qu'il y aurait une requête pour mysql. Je vais mettre à jour mon post pour refléter cela – Antonym

Répondre

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

Celui-ci une chose que vous pourriez essayer. Bien que vous souhaitiez inclure la date dans votre requête ou d'une autre manière pour vous assurer que vous identifiez de manière unique l'enregistrement que vous recherchez.

Une autre chose à laquelle vous pourriez penser est de stocker l'ID d'événement, lorsque vous faites apparaître la référence à l'événement que vous souhaitez que l'utilisateur mette à jour. Ensuite, vous devez vous assurer que vous mettez à jour uniquement l'enregistrement que vous avez l'intention de.

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