J'ai des tables dans ce style

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
CREATE TABLE auteur
( id INTEGER NOT NULL PRIMARY KEY,
nom VARCHAR(16),
 prenom MCH_NOM VARCHAR(16))
 
CREATE TABLE passion
(id_auteur INTEGER NOT NULL,
 descrip TEXT)
J'ai cherché à récupérer tous les auteurs ayant le même nom et la même passion mais...je ne vois pas comment faire ! Pour l'instant j'en suis là:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
WITH multiname AS(
 SELECT auteur.nom,passion.descrip 
 FROM auteur 
 JOIN passion ON auteur.id = passion.id_auteur 
 WHERE nom IN (
  SELECT nom 
  FROM auteur 
  GROUP BY nom HAVING COUNT(nom) > 1
 )
)
SELECT * 
FROM multiname 
WHERE descrip IN (
 SELECT descrip 
 FROM multiname 
 GROUP BY nom,descrip HAVING COUNT(*) > 1
)
Mais ça m'a l'air à la fois inutilement compliqué et très imparfait (ne récupère pas les descrip NULL par exemple). Je bloque !