0
votes

Exclusion des enregistrements de la table en fonction des règles d'une autre table

J'utilise Oracle SQL et j'ai une table de produits avec différents attributs et volume de vente pour chaque produit et une autre table avec certaines règles d'exclusion pour différents niveaux d'agrégation. Regardons l'exemple:

Voici notre table principale avec les données de vente sur lesquelles nous souhaitons effectuer des calculs:

 Entrez la description de l'image ici

et l'autre table contient des règles différentes qui sont censées exclure certaines lignes de la table ci-dessus:

 Entrez la description de l'image ici

Quand il y a un "X", cette colonne ne devrait pas être considérée comme nos règles: 1. Exclure toutes les lignes avec attr_3 = 'non' 2. Exlcule toutes les lignes avec attr_1 = 'Europe' et attr_2 = 'Snacks' et attr_3 = 'Non' 3. Exlcule toutes les lignes avec attr_1 = 'Africa'

et sur la base de ce que notre sortie finale devrait être comme celle-ci:

 Entrez la description de l'image ici

Comment cela pourrait être exercé dans SQL? Je pensais à rejoindre mais je ne sais pas comment gérer différents niveaux d'agrégation d'exclusions.


2 commentaires

Veuillez expliquer la logique d'exclusion plus attentivement ici, car ce n'est pas clair pour moi.


Je pense que la ligne 16543 EUROPE Snacks Oui 23546 est absent dans le jeu de résultats


4 Réponses :


0
votes

Vous pouvez utiliser n'existe pas xxx

où je considérais les valeurs x dans les attributs TABLE AS NULL . Si vous avez vraiment X , vous pouvez utiliser : xxx

à la place.

Démo


0 commentaires

0
votes

Vous pouvez utiliser la jointure à l'aide de la case .. Lorsque CODE> Énoncé comme suit:

SELECT P.* 
  FROM PRODUCT P
  JOIN RULESS R ON 
        (R.ATTR_1 ='X' OR P.ATTR_1 <> R.ATTR_1)
        AND (R.ATTR_2 ='X' OR P.ATTR_2 <> R.ATTR_2) 
        AND (R.ATTR_3 ='X' OR P.ATTR_3 <> R.ATTR_3) 


0 commentaires

1
votes

i pense votre sortie attendue est fausse. Aucune des règles ne exclut la deuxième rangée (Europe - Snacks - Oui). XXX


0 commentaires

0
votes

Je ferais cela avec trois différent n'existe pas : xxx

en particulier, cela peut tirer parti des index sur (attr_1) , (attri_2) et (attr_3) - quelque chose qui est assez pratique si vous avez un nombre modéré de règles.


0 commentaires