Use the QGIS DB Manager and use SQL Spatial to join the data on the SCHOOL_ID column from both tables:
First load your shapefiles into the map:
Then open the Database > DBManager tool
Access your layers from the "Virtual Layers" node:
Click the Query (QGIS Layers) tab.
Here you can write some SQL and use the ST_Distance function as if you were running a PostGIS or Spatialite database.
Here is the query I can use to join the students to the schools on SCHOOLNUM / SCHNUM - and I can also filter by grade level, etc. etc.
I'm also storing my geometry in WGS84/4326, so I'm using the ST_Transform tool to project the geometry to STATE PLANE COLORADO / 2877 which is in Feet, which I then divide by 5280 to get my distances in MILES:
, ST_Distance(ST_Transform(sch.geometry, 2877), ST_Transform(stu.geometry, 2877)) / 5280 as DistToSchool_Mi
from "Schools_Current" as sch
join "Geo_Active_Student" as stu on sch.schnum = stu.schoolnum
where stu.grade = '05'
and sch.elem = '1'
And here is the result:
If you like how this works, you should get into PostGIS!!!