2010-10-19 3 views
2

Je suis aux prises avec le problème suivant. Je veux limiter l'accès à une table en utilisant Oracle VPD. Dans la clause where que les sélectionnez revient la fonction politique que je besoin d'une référence à la table dans une sous-requête comme suit:Oracle VPD comment référencer la table

select * from Table t1 
where not exists (select 1 from Table t2 where t2.name=t1.name and t2.date=t1.date) 

(L'exemple ne fait pas beaucoup de sens, sauf pour illustrer le problème)

Je n'ai aucun contrôle sur la partie sélectionnée de la requête.

select * from Table t1 

La table peut recevoir n'importe quel alias ou aucun. Donc, je n'ai aucune idée de comment référencer la table dans la clause where. Existe-t-il un moyen de contourner ce problème?

(Oracle 10gR2)

+0

OK, grâce à Tony J'ai obtenu ma solution. où (nom, date) pas dans (sélectionnez le nom, la date ...) – Rene

Répondre

0

Je pense que vous devez utiliser NOT IN:

(name, datecol) not in (select name, datecol from table2) 
+0

Merci pour la solution de contournement mais j'ai deux colonnes à comparer. Je vais mettre à jour mon exemple en conséquence – Rene

+0

J'ai mis à jour ma réponse ... –

+0

Merci parfois la solution vous regarde en face ... mais c'est pour ça qu'il y a Stackoverlflow – Rene

Questions connexes