Sr. Web Developer
mediabistro.com
US-NY-New York

Justtechjobs.com Post A Job | Post A Resume

SQL Theory & How-To
The first thing to note is that we have two tables here with a many to one relationship. "Many to one what?" What this means is that there can be "many" links in "one" category, thus creating a "many to one" relationship. Other types are "one to one" and "many to many". To keep things simple we won't be going into those. Another thing to note is that they share a common bond "categoryID" - this "relates" each link to its respective category. Notice that they have the exact same attributes - "tinyint(2) UNSIGNED NOT NULL" - which will optimize the JOIN we do on that field later in this article. "Optimize ... who needs to optimize - it's only gonna have 15 links in it!" - well it's a good practice to get in, I know MySQL needs to have EXACT declarations for an optimized JOIN - other DB's may not. A good article on normalizing your tables can be found here.
I'll leave how you enter the data into the tables up to you. I generally make a simple form to enter in cateogories into link_categories and then use that table in my form for link_information - choosing a category each time I enter a link and the categoryID being entered into the link_information table. So after we have some data entered into our tables we have something like this:
mysql> select * from link_categories;       
+------------+-----------------+
| categoryID | categoryName    |
+------------+-----------------+
|          1 | miester.org     |
|          2 | Linux           |
|          3 | miester's picks |
|          4 | PHP             |
|          5 | My Desktop      |
|          6 | Mini Howto's    |
+------------+-----------------+
6 rows in set (0.00 sec)

mysql> select * from link_information;
+--------+------------+-----------------+--------------------------+----------+----------------------+
| linkID | categoryID | linkTitle       | linkURL                  | linkHits | linkInfo             |
+--------+------------+-----------------+--------------------------+----------+----------------------+
|      1 |          2 | Linux.com       | http://www.linux.com     |       69 | Info about link here |
|      2 |          2 | Slackware Linux | http://www.slackware.com |       70 | Info about link here |
|      3 |          1 | Home            | http://www.miester.org   |      377 | Info about link here |
+--------+------------+-----------------+--------------------------+----------+----------------------+
"But I only want to show the title, link, and category name on my homepage!" - OK that's where the JOIN comes into play here.
mysql> SELECT I.linkTitle as title, I.linkURL as href, C.categoryName as category 
    -> FROM link_information as I, link_categories AS C 
    -> WHERE I.linkCategory=C.categoryID;
+-----------------+--------------------------+-------------+
| title           | href                     | category    |
+-----------------+--------------------------+-------------+
| Linux.com       | http://www.linux.com     | Linux       |
| Slackware Linux | http://www.slackware.com | Linux       |
| Home            | http://www.miester.org   | miester.org |
+-----------------+--------------------------+-------------+
3 rows in set (0.00 sec)
[ Next Page ]

[Page 1]  [Page 2]  


Comments:
converting an db2 schema into a sql schemascott chittock12/05/05 14:09
ven diagramshea01/10/05 20:47
RE: Select queryDennis DeOcampo07/28/03 12:03
No JoinRAG03/25/03 10:37
RE: Primary keyTbull01/02/03 16:23
RE: Basic SqlJason12/14/02 00:50
SQ7 Problems and annswersAlbert Salima12/05/02 05:26
RE: SQL getting the last recordKamalakar Desai12/03/02 22:27
MySQLsubhash10/19/02 05:51
How do I convert a IBM DB2 into a MYSQLHaresh Moradia10/10/02 21:47
PHP Session Variables?CJ Sperber10/04/02 16:07
RE: SQL getting the last recordqwerty uiop08/26/02 18:47
RE: PRIMARY filegroup fullBrian Kalunga08/23/02 09:21
SQL getting the last recordDrew08/08/02 11:20
Copy table in MSSQL7 or 2000Shelley08/01/02 02:20
RE: Primary key solution (or not?)Kodiak07/31/02 05:50
RE: how can i retrieve access database to SQL DBRUPENDRA KIRAN KOTA07/26/02 03:51
Primary keyARE MOSHOOD A07/19/02 12:26
RE: mySQL to MS-SQL in PHPDecibel07/02/02 10:36
Poor MySQL CodingMattR07/02/02 08:49
RE: Primary keyfabien07/02/02 05:56
Select queryEmer Cronin05/29/02 07:18
RE: Primary keyThor Sune Jensen05/03/02 03:58
how can i retrieve access database to SQL DBJoe05/02/02 23:57
? Inner Joins ?Steve04/25/02 08:51
RE: How can I retrieve data from MS Access?Greg Davey04/21/02 15:37
RE: SQL Sourceszein04/19/02 07:47
How can I retrieve data from MS Access?Daniels P03/20/02 14:40
Primary keyEduardo Pinheiro03/20/02 13:48
Connecting string for MS SQL server 2000Mahesh 03/19/02 04:12
RE: how to database filesMike Siekkinen03/06/02 21:29
RE: Theory?pedro02/01/02 23:48
RE: Basic SqlYohanes Eko01/22/02 01:47
RE: Theory?Joe Stump12/14/01 13:36
RE: Basic SqlBruce Pierson12/06/01 00:07
mySQL to MS-SQL in PHPalisa12/04/01 02:56
Basic Sqltracy Bradshaw11/30/01 12:15
"Venn diagram"; "Ven diagram"Michael Levy11/29/01 10:00
RE: how to access database files created in fDr.K.Giridhar09/09/01 23:51
typo error in articleMike C08/21/01 19:48
ODBC prepare/ selectJabro08/05/01 08:23
Combining text and dataAntony Carr08/01/01 06:05
how to database filesalfin07/19/01 07:52
How to fetch a Group By QueryFred07/09/01 08:10
RE: Theory?IndyMan05/09/01 08:19
access MSSQL !Hoan03/18/01 02:28
UNIQUEDave J.02/20/01 08:15
RE: learning in correct orderarmin02/13/01 04:35
SQL SourcesLogan01/15/01 15:50
RE: (1)$where[] and (2)"f[category]" Ryan Holmes01/10/01 18:00
RE: (1)$where[] and (2)"f[category]" Terry Dahms01/10/01 16:19
Error in dynamic WHERERyan Holmes01/09/01 23:05
Easy there Mr. MathBrian Busche01/09/01 16:39
RE: Theory?Kirby L. Wallace01/08/01 15:38
RE: learning in correct orderjoe stump01/08/01 12:48
RE: learning in correct orderRoel01/08/01 11:45
learning in correct orderClaire Morris01/07/01 16:54
RE: TheoryKernel Panic 01/07/01 08:03
Re: JoinsSeth01/07/01 03:46
RE: TheorySteve Yelvington01/06/01 14:28
RE: External ReferenceClarence Liau01/06/01 01:58
there's NO 'I.linkCategory'Rodrigo01/05/01 14:56
RE: TheoryPaul K Egell-Johnsen01/05/01 07:29
RE: TheoryStephen VanDyke01/05/01 07:02
External ReferenceAnderson Fortaleza01/05/01 05:16
RE: Error in queryFrank Seesink01/04/01 18:54
TheoryDerek C01/04/01 15:40
Error in queryAndreas Bernhardsen01/04/01 07:04
 

If you are looking for help, please post on the appropriate forum here. Your questions will be answered much more quickly.

Add A Comment:

Name:

Email:

Subject:

Message:

To reduce spam posts, messages are now manually approved

You are not [logged in]. That means your account will not get credit for this post.