そのような普遍的なクエリを書くことは可能ですか? ユニバーサルとは、このクエリを他のテーブルに使用できるように、外部キーである列名を入力する必要がないことを意味します。簡単な例:
[table workers]
ID [PK] | worker | department [FK]
--------+--------+-----------
1 | Smith | 2
[table departments]
ID [PK] | department
--------+------------+
1 | Paris |
2 | Oslo |
SELECT/JOIN
クエリの後、次のように表示されます。
ID [PK] | worker | department [FK]
--------+--------+-----------
1 | Smith | Oslo
しかし、書く代わりに:
SELECT workers.ID, workers.worker, departments.department
FROM workers JOIN departments ON workers.department = departments.ID;
これは次の場合にのみ機能しworkers
、departments
次のようなより普遍的なものを好むでしょう:
SELECT * FROM [tableName] JOIN [referenced table#1],
[referenced table#2]...[#n]
ON [tableName].FK#1 = [referenced table#1].[2nd column],
[tableName].FK#2 = [referenced table#2].[2nd column]...#n
where #n
- テーブルごとに異なる外部キーとそれらが参照するテーブルの数。