First, you are describing a "one-to-many" relationship, bceasue one "file" record can be referenced by many "people" records. If this is the case, you may wish to re-design your tablse such that a "people record" contains a "file_id" field. You can then do away with the "filespeople" table altogether. Normalization is a good thing; but not when it is at the detriment of good design including how one processes it.
If you do require the "filespeople" table, then you'll have to INSERT records programmatically with your favorite scripting (PHP,ASP,PERL) language or program language. FYI. Your "filespeople" file indicates that both fields are PRIMARY keys. That cannot be. Only one field may be PRIMARY. I just now tried it to be certain. -----Original Message----- From: Erik Price [mailto:[EMAIL PROTECTED]] Sent: Wednesday, January 09, 2002 11:14 AM To: [EMAIL PROTECTED] Cc: Etienne Marcotte Subject: INSERTing into joined tables? Hello, everyone -- I have received a great deal of help from many members of this list, so I'd like to acknowledge that now. Someday, when I have my head wrapped around this stuff, I hope to return the favor. In the meantime, however, I have come across my worst brainbuster yet. Any help on this is greatly appreciated. I constructed my tables in the most "normalized" way that I could (without overdoing it), so that in some cases, there is no -direct- relationship between tables. That is, I have a table called "people" and a table called "files", and a foreign key table called "filespeople": Database: medialab_db Table: people +-------------+----------------------+------+-----+ | Field | Type | Null | Key | +-------------+----------------------+------+-----+ | people_id | smallint(5) unsigned | | PRI | (auto-incremented) | first_name | varchar(36) | | | | last_name | varchar(36) | | | +-------------+----------------------+------+-----+ Database: medialab_db Table: files +-------------+-----------------------+------+-----+ | Field | Type | Null | Key | +-------------+-----------------------+------+-----+ | file_id | mediumint(8) unsigned | | PRI | (auto-incremented) | file_name | varchar(64) | | | +-------------+-----------------------+------+-----+ Database: medialab_db Table: filespeople +-----------+-----------------------+------+-----+ | Field | Type | Null | Key | +-----------+-----------------------+------+-----+ | file_id | mediumint(8) unsigned | | PRI | | people_id | smallint(5) unsigned | | PRI | +-----------+-----------------------+------+-----+ The relationship, in real life, is that I would like to establish many-to-many relationships between "files" records and "people" records, so that a record in "files" would be associated with several people from "people". There is a foreign key table called "filespeople". The SQL used to write a SELECT statement would use the join like so: SELECT files.file_name, people.first_name, people.last_name FROM files, people, filespeople WHERE files.file_name = $filename AND files.file_id = filespeople.file_id AND people.people_id = filespeople.people_id (the $filename variable is a user-selected variable, I'm using PHP) So I designed my "files" and "people" tables without any direct relationship with one another, thinking to link them with the SELECT statement. What I completely forgot, up until this point, was that I would need to INSERT these records (from pre-written HTML/PHP forms), and there is no WHERE clause in the INSERT statement to keep everything together. In my scenario, a user might add a record to "files" and wish to associate that record to some of the records in "people", either new or pre-existing (typed into an HTML text input form or something). How should SQL code be arranged to "link" these records over the foreign key table? INSERT INTO files (file_name) VALUES ("$filename") and INSERT INTO people (first_name, last_name) VALUES ("$firstname", "$lastname") but... to keep it all together... is lost on me... and then later to have UPDATE statements to do the same thing! Although I suspect this may be easier as I can use the WHERE clause in an UPDATE statement. If anyone has a link to a tutorial on this very concept, that would be greatly appreciated as well! Thank you, Erik --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php