我正在使用postgreSQL 9.3。什麼是最有效的方法來創建一個三表在JOG與PostgreSQL中的WHERE子句
我想說,我的問題是有點主觀的,但我沒有找到任何相關的問題或文章...
我有三個表如下:
藝術家:
+--------+----------+
|artistId| name |
+--------+----------+
| 1 | James |
| 2 | Jack |
| 3 | Henry |
| 4 | Tom |
+--------+----------+
類型:
+---------+-----------+
| genreId | name |
+---------+-----------+
| 1 | rock |
| 2 | dub |
+---------+-----------+
和接線表artistsGenres:
+--------+---------+
|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');
我不知道是否有更有效的方式來做到這一點?
看起來你的查詢不正確,你對照genres.genreId匹配aG.artitsId。 – Eelke 2015-04-04 11:26:56
你是對的,我編輯了我的問題。 – Simon 2015-04-04 11:33:06
一位藝術家可以擁有多種流派嗎? (例如,藝術家行可以存在與{artistId = 1,genreId = 2}?) – wildplasser 2015-04-04 11:51:56