 <p>The classic answer to such questions is to create a SQL VIEW.</p> <p>Views are like dynamic virtual tables - in queries you use the view name instead of a table name, and the DBMS runs the query defined by the view to produce the rows for the query on the view. You therefore see rows based on the data from the tables at the time you access the view, not at the time the view was created.</p> <p>You would create this view with a statement such as</p> <pre><code>CREATE VIEW PROT_WITH_UNITS AS SELECT * FROM dna_extraction_protocols P JOIN measurement_units M ON P.volume_unit = M.id </code></pre> <p>This will give you a view with all columns of both tables, pre-joined on (what I presume to be) the required foreign key.</p> <p>If you get the definition wrong you can drop views just like tables, so you should get there eventually.</p>