I can share the little I know:On a SELECT statement, you first say from WHERE you want to get the data from, so let's say... table_Users.SELECT * FROM table_Users u
When you INNER JOIN with another table, you're getting only the intersection values from the two tables.INNER JOIN table_Food f ON f.UserID = u.UserID
This will display the results of all users and all foods, ONLY the users who HAVE food. (And also the food who have users assigned to them).LEFT JOIN table_Food f ON f.UserID = u.UserID
This will display the results of all users, regardless if they've food or not. So you may have some rows with Users with NULL on their food columns.RIGHT JOIN table_Food f ON f.UserID = u.UserID
This will display all foods, regardless if they're assigned to users or not. Since you're selecting everything, you will have rows with NULL users but with food columns filled.There's also some other type of joins like CROSS (a RIGHT & LEFT simultaneously) and UNION (just add everything) but usually INNER, LEFT and RIGHT are suficient for most of the common stuff you may need (non big, nasty reports).Hope it helps!Edit: Keep in mind the table you select mainly from affects how LEFT and RIGHT display, the first table is said to be on the LEFT (that's why LEFT checks all values from that table). So even if you want you could select mainly from table_Food and RIGHT JOIN with users and you would get the same results.