私はpostgreSQL 9.3で作業しています。
私の質問は少し主観的だと言いたいのですが、関連する質問や記事は見つかりませんでした...
次のように3つのテーブルがあります。
アーティスト:
+--------+----------+
|artistId| name |
+--------+----------+
| 1 | James |
| 2 | Jack |
| 3 | Henry |
| 4 | Tom |
+--------+----------+
ジャンル:
+---------+-----------+
| genreId | name |
+---------+-----------+
| 1 | rock |
| 2 | dub |
+---------+-----------+
ジャンクション テーブルの artistGenres:
+--------+---------+
|artistId| genreId |
+--------+---------+
| 1 | 1 |
| 2 | 2 |
| 3 | 1 |
| 4 | 2 |
+--------+---------+
すべてのアーティストをジャンル名で取得したい。現時点では、次のようにします。
SELECT a.*
FROM artistsGenres aG
INNER JOIN artists a ON a.artistId = aG.artistId
WHERE aG.genreId = (SELECT genreId FROM genres WHERE name = 'dub');
もっと効率的な方法はないか考え中です。