EXISTE / DA PRA FAZER SQL CONDICIONAL?

FBUR 04/12/2009 08:34:55
#329130
Bom dia. Uso o MySQL 5.

Estou precisando de uma SQL condicional (não sei se é correto dizer assim para este caso).

O que eu quero:

Se todos os registros de uma tabela satisfizerem a condição, o id do registro de uma outra tabela é retornado.

Tenho uma tabela de itens (tabela1) e outra dos status destes itens (tabela2). Cada item da tabela1 pode ter mais de um status na tabela2.

Ex:
Para o item A (tabela1), pode ter os seguintes status na tabela2:
- não aprovado
- aprovado
- não aprovado
- não aprovado

A pesquisa deverá retornar SOMENTE os itens que todos os status estejam [ô]não aprovado[ô].

Algo do tipo: [Ô]retorne o id da tabela1 somente se não existirem ocorrências [ô]aprovado[ô] na tabela2

é possível?
[ ]'s
TECLA 04/12/2009 09:22:16
#329134
Tente assim:

SELECT		t1.id
FROM tabela1 t1
INNER JOIN tabela2 t2
ON t1.id_status = t2.cod_status
WHERE t2.desc_status = [ô]não aprovado[ô]


Como você não postou a estrutura das tabelas, altere os campos ID_STATUS e COD_STATUS para os seus devidos nomes.
FBUR 04/12/2009 09:38:32
#329137
Então TECLA,

Eu não postei as tabelas pq isso é uma sub-sub-consulta, e achei q ia confundir. Então postei só o conceito.

Então... Dessa forma, se existir algum status [Ô]não aprovado[Ô] o ID é retornado.

Porém, o ID só poderá ser retornado se, e somente se, não existir nenhum [Ô]aprovado[Ô] para o ID. Ou seja:

Se o ID possuir os status:

- não aprovado
- aprovado
- não aprovado
- não aprovado

Ele não deve fazer parte da pesquisa, pois existe um status [Ô]aprovado[Ô] para ele.

Só devem aparecer na pesquisa os IDs que tiverem com todos os status [ô]não aprovado[ô].

[ ]'s

FBUR 04/12/2009 11:10:42
#329152
Não achei nada parecido...

O jeito foi combinar WHERE tabela1.id IN ... com AND tabela1.id NOT IN ....

[ ]'s
Tópico encerrado , respostas não são mais permitidas