/ / SQL - Renvoie uniquement les enregistrements contenant des valeurs en double dans une colonne spécifique d'une jointure externe gauche - sql, oracle, join

SQL - Renvoie uniquement les enregistrements dont les valeurs sont dupliquées dans une colonne spécifique d'une jointure externe gauche - sql, oracle, join

J'ai la requête suivante ...

SELECT DISTINCT
inv.name,
loc.city,
cls.color
FROM INVENTORY inv
INNER JOIN Model mod ON mod.id = inv.id
LEFT OUTER JOIN Location loc ON loc.id = mod.id
LEFT OUTER JOIN Class cls ON cls.id = mod.id
ORDER BY name, city asc;

Ce qui me donnera ce qui suit ...

   NAME    | CITY      | Color
1  Bob       New York    Red
2  Janet     Denver      Green
3  John      New York    Blue

Mais mes résultats souhaités sont ...

   NAME    | CITY      | Color
1  Bob       New York    Red
2  John      New York    Blue

Plusieurs publications sont similaires mais ne semblent pas fonctionner pour ma requête spécifique car je joins plusieurs tables à l'aide d'une jointure interne et de deux jointures externes à gauche. Toute aide est grandement appréciée!

Réponses:

0 pour la réponse № 1

Si vous souhaitez simplement que les villes apparaissent plusieurs fois, utilisez les fonctions analytiques:

with t as (
<your query here without the order by>
)
select t.*
from (select t.*, count(*) over (partition by city) as city_cnt
from t
) t
where city_cnt > 1;