J'ai des contrats et des territoires Tableau. Ils partagent une relation à plusieurs . J'essaie de créer une requête pour obtenir tous les contrats uniquement en Chine. Cela me rappellerait essentiellement tous les records de contrats pour lesquels il n'y a qu'un seul enregistrement correspondant dans la table des territoires avec nom 'Chine'
Si possible, je voudrais le faire sans groupe. Parce que pour simplifier la question que je n'ai pas inclus d'autres choses compliquées qui finiront par faire partie de cela. P>
étant donné les données d'échantillonnage suivantes. Je voudrais obtenir uniquement le contrat4 à la suite: em> p>
4 Réponses :
Voici une solution possible utilisant joindre code> et partition code>:
Cette syntaxe a l'air bien pour Oracle. Au fait, PL / SQL est le langage de programmation - Oracle SQL s'appelle "Oracle SQL" ou "SQL" pour Short :)
Essayez comme ci-dessous en utilisant la sous-requête corrélée
select c.*,t.* from contracts c join territories t
on c.Id = t.contract_id
where exists ( select 1 from territories t1
where t1.contract_id=t.contract_id
having count(distinct name)=1
) and t.name='china'
Vous pouvez utiliser ci-dessous
select c.* from contracts c join territories t
on c.Id = t.contract_id
where not exists ( select 1 from territories t1
where t1.contract_id=t.contract_id
and t1.name <> 'china'
) and t.name='china'
Si tous les contrats ont un territoire, vous pouvez simplement faire:
select c.*
from contracts c
where not exists (select 1
from territories t
where t.contract_id = c.contract_id and
t.country <> 'china'
) and
exists (select 1
from territories t
where t.contract_id = c.contract_id and
t.country = 'china'
);
Veuillez ajouter des exemples de données à votre question pour les deux tables, ainsi que la sortie attendue.
Dis que vous avez des contrats5 sans enregistrement dans la table des territoires (est-ce possible?); Si oui, devrait-on contracter5 être extrait ou non?
Ce n'est pas un tableau des territoires, c'est un tableau des contrats-territoires mettant en œuvre une relation nombreuses à plusieurs entre contrats et territoires. Si c'était une table de territoires, il n'aurait pas deux rangées pour le Japon et l'Inde et trois pour la Chine.