2015-08-20 1 views
-2

Je table comme ceMysql - sélectionnez avec la condition et l'entrée dans le tableau?

| idrule | idsys | 
---------------------- 
|R01#1  |  1 | 
|R01#1  |  2 | 
|R01#2  |  1 | 
|R01#2  |  3 | 
|R01#2  |  4 | 
|R01#3  |  2 | 
|R01#3  |  1 | 
|R01#3  |  5 | 
|R01#4  |  1 | 
|R01#4  |  4 | 
|R01#4  |  3 | 
---------------------- 

je veux choisir si la sortie doit être à deux condition dans une matrice d'entrée, si je veux entrée (idsys = 1 et idsys = 2):

| idrule | 
---------- 
|R01#1 | 
|R01#3 | 
---------- 

Quelqu'un peut-il aider? grâce

ADDITION QUESTION ----- ----- c'est la solution:

SELECT idrule 
FROM tablename 
WHERE idsys IN (1, 2) 
GROUP BY idrule 
HAVING count(*) = 2 

Je veux ajouter "Où" condition "MAX (somefield)" est disponible? donc le code sera:

SELECT idrule 
FROM tablename 
WHERE MAX(somefiled) and 
idsys IN (1, 2) 
GROUP BY idrule 
HAVING count(*) = 2 

mais ne fonctionne pas? une idée?

+0

Lorsque vous posez une question, vous devez nous faire savoir ce que vous avez déjà essayé et ce qui a mal tourné. Vous devriez également essayer d'inclure toutes les informations pertinentes. Dans ce cas, nous aurions besoin de connaître le nom de la table pour écrire la requête pour vous. – BrokenBinary

Répondre

0

Vous pouvez le faire:

SELECT idrule 
FROM tablename 
WHERE idsys IN (1, 2) 
GROUP BY idrule 
HAVING count(*) = 2 
+0

Merci Jhon, je vais essayer. – Mike

+0

@Jon, merci, la réponse est juste. c'est ce que je veux dire, btw je veux demander à Jhon, quelle est la signification de HAVING count (*) = 2? ... c'est la longueur de l'entrée (idsys IN (1,2))? – Mike

+0

Oui. Si vous exécutez 'SELECT * FROM nom de table WHERE idsys IN (1, 2)', toutes les idrules ayant idsys 1 ou 2 apparaîtront. Il suffit de sélectionner ces idrules le nombre d'entrées est égal à la longueur de l'ensemble (1, 2). –

0
SELECT idrule 
    FROM *table* t 
     JOIN *table* ct ON t.idrule = ct.idrule 
    WHERE t.idsys=1 AND ct.idsys=2; 
+0

@JohnBupit mis à jour. – asdf

+0

@asdf: ouais je le pense .... – Mike