WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

PostgreSQL · Basic · question 12 of 100

What are the different types of joins in PostgreSQL, and how do they work?

📕 Buy this interview preparation book: 100 PostgreSQL questions & answers — PDF + EPUB for $5

In PostgreSQL, there are several types of joins that can be used to combine data from multiple tables, including:

1. Inner Join

An inner join returns only the rows that have matching values in both tables being joined. It works by comparing the values in the specified columns of each table and returning the rows where those values match. The syntax for an inner join is as follows:

SELECT *
FROM table1
JOIN table2
ON table1.column_name = table2.column_name;

For example, let’s say we have two tables - "employees" and "departments" - and we want to join them based on the "department_id" column:

SELECT *
FROM employees
JOIN departments
ON employees.department_id = departments.department_id;

This would return only the rows where the "department_id" values match in both tables.

2. Outer Join

An outer join returns all the rows from one table and any matching rows from the other table. There are two types of outer joins:

- Left outer join: returns all the rows from the left table and any matching rows from the right table.

- Right outer join: returns all the rows from the right table and any matching rows from the left table.

The syntax for a left outer join is as follows:

SELECT *
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name = table2.column_name;

And for a right outer join:

SELECT *
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name = table2.column_name;

For example, let’s say we have two tables - "orders" and "customers" - and we want to join them based on the "customer_id" column using a left outer join:

SELECT *
FROM orders
LEFT OUTER JOIN customers
ON orders.customer_id = customers.customer_id;

This would return all the rows from the "orders" table, and any matching rows from the "customers" table. If there are any rows in the "orders" table that don’t have a matching row in the "customers" table, those rows will still be included in the result set with NULL values for the "customer" columns.

3. Cross Join

A cross join returns the Cartesian product of the two tables being joined, meaning it returns all possible combinations of rows from both tables. The syntax for a cross join is as follows:

SELECT *
FROM table1
CROSS JOIN table2;

For example, let’s say we have two tables - "colors" and "sizes" - and we want to join them using a cross join:

SELECT *
FROM colors
CROSS JOIN sizes;

This would return a result set with all possible combinations of rows from the "colors" and "sizes" tables.

4. Self Join

A self join is used when a table needs to be joined with itself. It’s useful when a table has a hierarchical relationship and we need to retrieve data from different levels of the hierarchy. The syntax for a self join is the same as for any other join, but we need to use aliases to differentiate between the two instances of the same table:

SELECT *
FROM table1 AS t1
JOIN table1 AS t2
ON t1.column_name = t2.column_name;

For example, let’s say we have a table of employees with a "supervisor_id" column that references the "employee_id" of another employee from the same table. We could use a self join to retrieve the names of both the employee and their supervisor:

SELECT e.employee_name, s.employee_name AS supervisor_name
FROM employees AS e
JOIN employees AS s
ON e.supervisor_id = s.employee_id;

This would return a result set with the names of each employee and their corresponding supervisor.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic PostgreSQL interview — then scores it.
📞 Practice PostgreSQL — free 15 min
📕 Buy this interview preparation book: 100 PostgreSQL questions & answers — PDF + EPUB for $5

All 100 PostgreSQL questions · All topics