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

Reply via email to