2017-04-13 2 views
0

J'ai une table avec numéro de compte, type de compte et 50 colonnes avec états US.Requête pour les comptes égaux à M et où ces comptes M contiennent "Ne" ou "NY" dans un autre champ

Je veux exécuter une requête dans l'accès où elle renvoie tous les types de comptes enregistrés qui sont dans NE ou NY. Chaque type de compte peut avoir jusqu'à 50 états différents dans n'importe quelle colonne d'état [1-50].

J'ai donc:

Select * 
FROM MSDAP 
WHERE account_type = 'Registered' AND State1 IN ('NE', 'NY') OR 
     State2 IN ('NE', 'NY') OR State3 IN ('NE', 'NY') OR 
     State4 IN ('NE', 'NY') OR State5 IN ('NE', 'NY') OR 
     State6 IN ('NE', 'NY') OR State6 IN ('NE', 'NY') OR 
     State7 IN ('NE', 'NY') OR State8 IN ('NE', 'NY') OR 
     State9 IN ('NE', 'NY') OR State9 IN ('NE', 'NY'); 

Cela ne signifie évidemment pas marché. Y a-t-il un moyen de faire cela?

Répondre

2

Quel terrible modèle de données. Vous devez avoir une ligne par état, plutôt que de répartir l'information entre les colonnes.

Dans tous les cas, votre problème est entre parenthèses égarées:

where account_type = 'Registered' AND 
     (State1 IN ('NE', 'NY') OR State2 IN ('NE', 'NY') OR 
     State3 IN ('NE', 'NY') OR State4 IN ('NE', 'NY') OR 
     State5 IN ('NE', 'NY') OR State6 IN ('NE', 'NY') OR 
     State6 IN ('NE', 'NY') OR State7 IN ('NE', 'NY') OR -- are you really checking `state6` again? 
     State8 IN ('NE', 'NY') OR State9 IN ('NE', 'NY') OR 
     State9 IN ('NE', 'NY') -- are you really checking `state9` again? 
    ) 
+0

Je sais - je travaille dans les paramètres que j'ai. Cela a fonctionné - Merci! – Abba