J'ai finalement besoin d'une liste de disques "import" qui incluent "album" enregistrements qui ont seulement une "chanson" chacun.Jointure complexe avec une clause group-by/having imbriquée?
C'est ce que j'utilise maintenant:
select i.id, i.created_at
from imports i
where i.id in (
select a.import_id
from albums a inner join songs s on a.id = s.album_id
group by a.id having 1 = count(s.id)
);
La sélection imbriquée (avec la jointure) est ultra-rapide, mais le externe « dans » l'article est atrocement lent.
J'ai essayé de faire de l'ensemble de la requête une seule jointure (pas d'imbrication) mais j'ai exécuté en problèmes avec les clauses group/having. Le mieux que je pouvais faire était une liste d'enregistrements "import" avec dupes, ce qui n'est pas acceptable.
Existe-t-il une manière plus élégante de composer cette requête?
Souhaitez-vous spécifier RDBMS? – Sung