| |||||||||||
| |||||||||||
MySQL - LEFT JOIN and RIGHT JOIN, INNER JOIN and OUTER JOIN
In a database such as MySQL, data is divided into a series of tables (the "why" is beyond what I'm writing today) which are then connected together in SELECT commands to generate the output required. I find when I'm running MySQL training, people often get confused between all the join flavours. Let me give you an example to see how it works.
If this isn't quite the question you're looking to have answered, we've got a MySQL IAQ (Infrequently Answered Questions that may help you. And if you want to learn how to make use of this in PHP, see here First, some sample data: Mr Brown, Person number 1, has a phone number 01225 708225 Miss Smith, Person number 2, has a phone number 01225 899360 Mr Pullen, Person number 3, has a phone number 01380 724040 and also: Person number 1 is selling property number 1 - Old House Farm Person number 3 is selling property number 2 - The Willows Person number 3 is (also) selling property number 3 - Tall Trees Person number 3 is (also) selling property number 4 - The Melksham Florist Person number 4 is selling property number 5 - Dun Roamin.
If I do a regular JOIN (with none of the keywords INNER, OUTER, LEFT or RIGHT), then I get all records that match in the appropriate way in the two tables, and records in both incoming tables that do not match are not reported:
If I do a LEFT JOIN, I get all records that match in the same way and IN ADDITION I get an extra record for each unmatched record in the left table of the join - thus ensuring (in my example) that every PERSON gets a mention:
If I do a RIGHT JOIN, I get all the records that match and IN ADDITION I get an extra record for each unmatched record in the right table of the join - in my example, that means that each property gets a mention even if we don't have seller details:
An INNER JOIN does a full join, just like the first example, and the word OUTER may be added after the word LEFT or RIGHT in the last two examples - it's provided for ODBC compatibility and doesn't add an extra capabilities. Extra link to three way join in solution centre (would have added that link in the comment except that it "spam trapped! (written 2004-12-20 18:38:05)
Associated topics are indexed under S152 - SQL Primer as Used in MySQLS157 - More MySQL Commands
Some other Articles
A Change is as good as a restChristmas break Review of the Autumn MySQL - Optimising Selects MySQL - LEFT JOIN and RIGHT JOIN, INNER JOIN and OUTER JOIN Automatic service upgrades Signage Railway train service, Melksham station Linux - where to put swap space Aladdin, or careful what you wish. 1754 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36 at 50 posts per pageThis is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price. Link to Ezine home page (for reading). Link to Blogging home page (to add comments). |
| ||||||||||
PH: 0800 043 8225 or 01225 708225 • FAX: 0845 8382 405 or 01225 707126 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho | |||||||||||