INNER JOIN
Used to exemplify equi-join
An equi-join is one type of INNER JOIN that can be applied using SQL.
Equi-joins will be used with SELECT statements to select data from more than one table. If the conditions specified in the INNER JOIN are met, then data from both tables is usually returned.
The word equi is used in reference to the = operator.
INNER JOINS can support use of < and > operators but it is only necessary to understand use of the = operator at National 5 level.
We already have a Pupil table, with the updated version shown below:
| PupilID | First Name | Surname | Class | Pastoral Care Teacher | Merit Points |
| 0001 | Nisa | Singh | 1T1 | Mr Harley | 0 |
| 0002 | Davie | Boland | 1I2 | Mrs Aitken | 0 |
| 0003 | Amy | Jones | 1M1 | Mr Gilchrist | 0 |
| 0004 | James | McNamee | 1T1 | Mr Harley | 0 |
| 0005 | Pawel | McTavish | 1I1 | Mrs Aitken | 0 |
| 0006 | Antonia | Gallagher | 1M2 | Mr Gilchrist | 0 |
| 0007 | Amy | McNamee | 1T1 | Mr Harley | 0 |
| 0008 | Tabiso | Matazinadze | 1T1 | Mr Harley | 0 |
| 0009 | Beatrice | Panner | 1T2 | Mr Harley | 0 |
| 0011 | Frankie | Al-Robeye | 1M2 | Mr Gilchrist | 0 |
| PupilID | 0001 |
|---|---|
| First Name | Nisa |
| Surname | Singh |
| Class | 1T1 |
| Pastoral Care Teacher | Mr Harley |
| Merit Points | 0 |
| PupilID | 0002 |
|---|---|
| First Name | Davie |
| Surname | Boland |
| Class | 1I2 |
| Pastoral Care Teacher | Mrs Aitken |
| Merit Points | 0 |
| PupilID | 0003 |
|---|---|
| First Name | Amy |
| Surname | Jones |
| Class | 1M1 |
| Pastoral Care Teacher | Mr Gilchrist |
| Merit Points | 0 |
| PupilID | 0004 |
|---|---|
| First Name | James |
| Surname | McNamee |
| Class | 1T1 |
| Pastoral Care Teacher | Mr Harley |
| Merit Points | 0 |
| PupilID | 0005 |
|---|---|
| First Name | Pawel |
| Surname | McTavish |
| Class | 1I1 |
| Pastoral Care Teacher | Mrs Aitken |
| Merit Points | 0 |
| PupilID | 0006 |
|---|---|
| First Name | Antonia |
| Surname | Gallagher |
| Class | 1M2 |
| Pastoral Care Teacher | Mr Gilchrist |
| Merit Points | 0 |
| PupilID | 0007 |
|---|---|
| First Name | Amy |
| Surname | McNamee |
| Class | 1T1 |
| Pastoral Care Teacher | Mr Harley |
| Merit Points | 0 |
| PupilID | 0008 |
|---|---|
| First Name | Tabiso |
| Surname | Matazinadze |
| Class | 1T1 |
| Pastoral Care Teacher | Mr Harley |
| Merit Points | 0 |
| PupilID | 0009 |
|---|---|
| First Name | Beatrice |
| Surname | Panner |
| Class | 1T2 |
| Pastoral Care Teacher | Mr Harley |
| Merit Points | 0 |
| PupilID | 0011 |
|---|---|
| First Name | Frankie |
| Surname | Al-Robeye |
| Class | 1M2 |
| Pastoral Care Teacher | Mr Gilchrist |
| Merit Points | 0 |
The database also has a table holding information on members of the school orchestra. This table is called 'Orchestra' and contains the following details:
| OrchestraMemberID | PupilID | Group | Tuition |
| 01 | 0004 | Woodwind | Yes |
| 02 | 0007 | Strings | No |
| 03 | 0008 | Brass | Yes |
| 04 | 0003 | Brass | No |
| 05 | 0009 | Percussion | No |
| OrchestraMemberID | 01 |
|---|---|
| PupilID | 0004 |
| Group | Woodwind |
| Tuition | Yes |
| OrchestraMemberID | 02 |
|---|---|
| PupilID | 0007 |
| Group | Strings |
| Tuition | No |
| OrchestraMemberID | 03 |
|---|---|
| PupilID | 0008 |
| Group | Brass |
| Tuition | Yes |
| OrchestraMemberID | 04 |
|---|---|
| PupilID | 0003 |
| Group | Brass |
| Tuition | No |
| OrchestraMemberID | 05 |
|---|---|
| PupilID | 0009 |
| Group | Percussion |
| Tuition | No |
SELECT Orchestra.Group, Pupil.First Name, Pupil.SurnameFROM OrchestraINNER JOIN Pupil ON Orchestra.PupilID = Pupil.PupilID;Would return:
| Group | First Name | Surname |
| Woodwind | James | McNamee |
| Strings | Amy | McNamee |
| Brass | Tabiso | Matazinadze |
| Brass | Amy | Jones |
| Percussion | Beatrice | Panner |
| Group | Woodwind |
|---|---|
| First Name | James |
| Surname | McNamee |
| Group | Strings |
|---|---|
| First Name | Amy |
| Surname | McNamee |
| Group | Brass |
|---|---|
| First Name | Tabiso |
| Surname | Matazinadze |
| Group | Brass |
|---|---|
| First Name | Amy |
| Surname | Jones |
| Group | Percussion |
|---|---|
| First Name | Beatrice |
| Surname | Panner |
Pupil ID is the primary key in the Pupil table. It appears as a foreign key in the Orchestra table. The equi-join is used to match the values held in both tables, so that results are only returned where a match exists.
Using a WHERE clause can further refine the results. In this example, only pupils who are part of the brass group are returned.
SELECT Orchestra.Group, Pupil.First Name, Pupil.SurnameFROM OrchestraINNER JOIN Pupil ON Orchestra.PupilID = Pupil.PupilID WHERE Orchestra.Group = ‘Brass’;| Group | First Name | Surname |
| Brass | Tabiso | Matazinadze |
| Brass | Amy | Jones |
| Group | Brass |
|---|---|
| First Name | Tabiso |
| Surname | Matazinadze |
| Group | Brass |
|---|---|
| First Name | Amy |
| Surname | Jones |