Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Databases Querying Relational Databases Joining Table Data with SQL Review and Practice

Allan Oloo
Allan Oloo
8,054 Points

LEFT JOIN & RIGHT JOIN

This may sound like a stupid question, but I am curious to know what makes a table left or right? why not use a where caulse with the OR keyword to get data that matches regardless whether they exist or not? I don't know if my question made sense. But I am a little confused with those JOIN statements. Also how do you know which order to join tables when writing a query to select a specific data.

1 Answer

Steven Parker
Steven Parker
231,248 Points

The terms "LEFT" and "RIGHT" refer to which side of the JOIN keyword gets priority.

A "LEFT JOIN" will use all rows from the expression before the join, and and "RIGHT JOIN" will use all rows of the table mentioned in the join itself.

Since you can choose either type to fit your needs, the main criteria for selecting the order of joins is to be sure that anything referenced in the "ON" clause of the join has already been included.

Tom Crow
Tom Crow
719 Points

To expand on Stevens great answer, choosing the table order is dependent on where the related data is.

So in challenge 3, the loans table contains relations to both the patrons and books tables, so it makes sense to bring that one in first. You can then join the books table in next, relating it to the loans table, and then the patrons table last, again relating it to the loans table.

We also know that we want to return a list of all the loans. So we can safely LEFT OUTER JOIN the loans table to the books table, as if a book hasn’t been loaned we don’t need to see it. We then also know if a book shows up in the loans table, someone must have loaned it, so we can safely LEFT OUTER JOIN the patrons table, as know all books that get pulled in during our first join have been loaned by someone.

That’s my understanding, please anyone correct me if I’m wrong and I’m sorry if that sounded a bit muddled. I don’t find joins simple or easy either lol.