2012-02-16 5 views
2

Avoir une table avec trois colonnes: col1 étant INT primaire, col2 & col 3 étant UNIQUE et INT.Instruction SQL Select avec attributs indexés UNIQUE

J'ai besoin pour sélectionner les lignes dans lesquelles col1, col2 et col3 sont égales à const1 et col2 et

col3 ne sont pas égales à zéro.

La requête suivante est-elle correcte?

NOTE: avez utilisé des noms significatifs pour les attributs et les valeurs données ici pour

fins illistrative seulement.

SELECT * FROM table WHERE col1 = const OR col2 = const OR col3 = const AND (coll2 <> 0 AND col3 <> 0); 

const peut être tout INT valeurs

+2

Vous dites « Different » dans le texte mais votre requête semble être la comparaison avec '='? –

+0

Est-ce un devoir? –

+0

@OlegDok: Certainement pas. Même si c'était le cas, j'ai essayé au moins de trouver la logique incorrecte, plutôt que de simplement copier la question de mes notes. – user980411

Répondre

1

Je suis confus, mais basé sur ce point:

What I basically need to do is to select those rows that match a particular const values, and such that the const value, and/or attribute values is/are not zero 

Je pense que ce que vous voulez est:

SELECT * 
FROM table 
WHERE 
(col1 = const1 or col2 = const1 or col3 = const1) and (col1 != 0 and col2 != 0 and col3 are !=0) 

Je compris que au moins l'une des colonnes doivent correspondre à la const, mais il ne peut pas être zéro

+0

Oui. Droite. Une ou plusieurs colonnes doivent correspondre à const, mais ne doivent pas être égales à zéro. – user980411

+0

ok, donc cela devrait le faire – Diego

+0

Pourquoi la réponse est-elle bonne puisqu'elle est opposée à la question? Cols ont ** pas ** d'être égal à const selon la question –

5

Non, la requête est incorrect. Voici le correct:

SELECT * 
FROM table 
WHERE 
    const1 IN (col1, col2, col3) 
AND 0 NOT IN (col2, col3) 

Mise à jour:

Votre requête trouve toutes les lignes où col2 <> 0 et col3 <> 0 et ajoute toutes les lignes où une ou plusieurs colonnes est égal à const

+0

Merci. Est-ce que ça vous dérange de me dire quelle est la requête que j'ai faite essentiellement ...? – user980411

+0

Réponse mise à jour .. –