SQL Q&a
SQL Q&a
```plaintext
Employees Table:
+----+----------+--------------+
| id | name | department_id|
+----+----------+--------------+
| 1 | Alice | 101 |
| 2 | Bob | 102 |
| 3 | Charlie | NULL |
| 4 | David | 101 |
| 5 | Eve | 103 |
+----+----------+--------------+
Departments Table:
+-------------+---------------+
| department_id | department_name |
+-------------+---------------+
| 101 | HR |
| 102 | IT |
| 103 | Finance |
| 104 | Marketing |
+-------------+---------------+
```
```sql
SELECT Employees.name, Departments.department_name
FROM Employees
INNER JOIN Departments ON Employees.department_id = Departments.department_id;
```
- **Result**:
```plaintext
+----------+------------------+
| name | department_name |
+----------+------------------+
| Alice | HR |
| Bob | IT |
| David | HR |
| Eve | Finance |
+----------+------------------+
```
```sql
SELECT Employees.name, Departments.department_name
FROM Employees
LEFT JOIN Departments ON Employees.department_id = Departments.department_id;
```
- **Result**:
```plaintext
+----------+------------------+
| name | department_name |
+----------+------------------+
| Alice | HR |
| Bob | IT |
| Charlie | NULL |
| David | HR |
| Eve | Finance |
+----------+------------------+
```
```sql
SELECT Employees.name, Departments.department_name
FROM Employees
RIGHT JOIN Departments ON Employees.department_id = Departments.department_id;
```
- **Result**:
```plaintext
+----------+------------------+
| name | department_name |
+----------+------------------+
| Alice | HR |
| Bob | IT |
| David | HR |
| Eve | Finance |
| NULL | Marketing |
+----------+------------------+
```
```sql
SELECT Employees.name, Departments.department_name
FROM Employees
FULL OUTER JOIN Departments ON Employees.department_id =
Departments.department_id;
```
- **Result**:
```plaintext
+----------+------------------+
| name | department_name |
+----------+------------------+
| Alice | HR |
| Bob | IT |
| Charlie | NULL |
| David | HR |
| Eve | Finance |
| NULL | Marketing |
+----------+------------------+
```
```sql
SELECT Employees.name, Departments.department_name
FROM Employees
CROSS JOIN Departments;
```
- **Result**:
```plaintext
+----------+------------------+
| name | department_name |
+----------+------------------+
| Alice | HR |
| Alice | IT |
| Alice | Finance |
| Alice | Marketing |
| Bob | HR |
| Bob | IT |
| Bob | Finance |
| Bob | Marketing |
| Charlie | HR |
| Charlie | IT |
| Charlie | Finance |
| Charlie | Marketing |
| David | HR |
| David | IT |
| David | Finance |
| David | Marketing |
| Eve | HR |
| Eve | IT |
| Eve | Finance |
| Eve | Marketing |
+----------+------------------+
```
```sql
SELECT e1.name AS Employee1, e2.name AS Employee2
FROM Employees e1
INNER JOIN Employees e2 ON e1.department_id = e2.department_id
WHERE e1.id <> e2.id;
```
- **Result**:
```plaintext
+----------+-----------+
| Employee1| Employee2 |
+----------+-----------+
| Alice | David |
| David | Alice |
+----------+-----------+
```
These are the main types of SQL joins, each serving different use cases depending
on the data you need to retrieve from your tables.