James, What you are describing is a many-to-many relationship and is very commonly done.
You should be able to get your desired output using your existing structure with something like: SELECT i.item_id AS "Item Number", i.item_desc AS "Item Description", o.option_desc AS "Option Description" FROM items AS i, options AS o, items_to_options AS ito WHERE i.item_id = ito.item_id AND ito.option_id = o.option_id ORDER BY i.item_id, o.option_desc; This produces the following: +-------------+------------------+--------------------+ | Item Number | Item Description | Option Description | +-------------+------------------+--------------------+ | 1 | car1 | engine | | 1 | car1 | seat | | 1 | car1 | steering wheel | | 1 | car1 | tires | | 2 | car2 | engine | | 2 | car2 | steering wheel | | 2 | car2 | tires | | 3 | car3 | seat | | 3 | car3 | steering wheel | | 3 | car3 | tires | +-------------+------------------+--------------------+ 10 rows in set (0.00 sec) You may want to consider using InnoDB tables instead of MyISAM tables for Foreign Key support. Take a look at: http://www.mysql.com/doc/en/Table_types.html To retrieve data from more than one table at a time, check out: http://www.mysql.com/doc/en/JOIN.html On Thu, 29 May 2003 00:10:49 -0600, James wrote: > Hello, > > Our company is currently redesigning its MySQL database to be more > efficient. Right now, our major concern is how to effectively do > multiple value lookups in one value table without sacrificing our > searching capability. > > Basically, we are trying to link an "Item" from one table to multiple > "Options" in another table without replicating too much data. Item 1 > (lets say car1) has options 1, 2, 3 & 4 (doors, wheels, engine, sunroof) > for example. Our current system (see below for an example) has a table > in the middle that acts a reference table of sorts, which works alright, > but we are currently doing two or more queries at run time; One to > select and compile the multiple options into a single text string, and > one to select the rest of the items info. Then we combine both queries > and fire them out to a web page. > > What we would like to see is a single MySQL select query that joins the > data for us into another string using the 'AS' name construct (not > necessarily with the current database structure, we are open to all > options at this point). If that is not possible (or recommended) any > suggestions on how to improve & re-organize for efficiency is greatly > appreciated. > > Example of existing system: > > Table item > ------------ > item_id - 1 > item_desc - car1 > > Table item_TO_options > ----------------------------- > item_id > option_id > > Data for Table item_TO_options > ---------------------------------------- > item_id | option_id > 1....1 > 1... 2 > 1... 3 > 1....4 > > > Table options > ----------------- > option_id > option_desc --- Listserv only address. Jeff Shapiro -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]