EXISTE / DA PRA FAZER SQL CONDICIONAL?
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
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
Tente assim:
Como você não postou a estrutura das tabelas, altere os campos ID_STATUS e COD_STATUS para os seus devidos nomes.
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.
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
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
Não achei nada parecido...
O jeito foi combinar WHERE tabela1.id IN ... com AND tabela1.id NOT IN ....
[ ]'s
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