Camarada, se você nunca estudou operadores lógicos, aí vai uma pequena luz:
AND é o operador lógico que retorna TRUE se e somente se, todos os operandos forem verdadeiros.
No caso, seria como o && do java e C++
SELECT * from nome where nome_proprio = "Joao" AND sobrenome = "Silva";
Só retornaria os registros em que nome_proprio seja Joao (da maneira como está escrito) e sobrenome seja Silva (da maneira como está escrito). Caso uma das duas não seja verdadeira, o select passa à próxima linha, até o fim da tabela.
Quanto ao que você quer, desculpe, a vida é assim, nem tudo que se quer se consegue, isso vale tanto para quem vai atrás como para aqueles que esperam cair do céu.
A questão é que o objetivo do select é verificar justamente o inverso. Ou seja, você não quer pesquisar e retornar algo que esteja como TRUE, quer que o select verifique se existe alguma coisa como FALSE.
Para quem conhece a estrutura de funcionamento de um banco de dados, sabe que um select é feito para buscar alguma coisa, lendo linha a linha e utilizando regras estipuladas (where, or, and, in, between, order by, group by, etc).
Neste caso, você teria que condicionar o select principal (para trazer o que você quer) à duas condições, a primeira com dois counts, o primeiro, contando o total de registros e o segundo contanto todos os registros true. A segunda, se e somente se o count de registros seja igual ao count de true.
Isso significa que você precisa fazer um select com if de subselects…
Eu optaria por uma stored procedure…