Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Amilt

[Resolvido] Consulta Mysql

Recommended Posts

Boa tarde a todos.

 

Gostaria que alguem me desse uma luz.

 

Tenho um sistema rodando em php com mysql onde tenho uma tabela que seria onde eu amazeno historicos de um equipamento.

 

exemplo: 'codigo','nome do equipamento','ocorrencia','data'

esse registros pode se repetir varias vezes, mudando é claro o codigo que está como auto_increment

 

posso ter por exemplo:

 

1,televisaox,manutencao,'01-11-2010'

2,televisaoy,ok,'01-11-2010'

3,televisaox,reprovado,'10-11-2010'

 

Nesse exemplo reparem que a mesma televisaox pode ter varias ocorrencias, assim como varios outro equipamentos.

Minha duvida é a seguinte, preciso retornar uma select, que me retornaria somente os equipamentos que tivessem determinados historicos.

A dificuldade seria assim:

Preciso consultar qual equipamento que sofreu 'manutencao' E ficou 'reprovado'

De acordo com o exemplo assim pela logica, preciso somente ter na tela a televisaox

Alguem entendeu ? rs

Ou me daria o caminho das pedras de como posso fazer isso ?

 

Hoje atualmente no programa eu trato um historico por vez, então eu posso listar todos que sofreram manutençao, mas na tela me retornaram todos independente de estarem reprovado ou ok, na tela onde me retornou tudo, eu tenho link para me mostrar o historico especificamente do equipamento que eu quero.

E o que eu quero é evitar isso, se eu poder melhorar essa consulta eu nao preciso exibir tudo na tela e sim somente o desejado, como citei acima

listar os que sofreram manutençao e ficaram reprovado.

 

Aguardo a lanterna de alguem

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode fazer um inner join na propria tabela,

 

por exemplo

 

sua tabela

id

ecode // codigo do equipamento

status

date

 

1, 10250, 1, 2010-11-15 13:12:54

2, 45202152, 1, 2010-11-15 13:12:54

3, 10250, 2, 2010-11-15 13:12:54

4, 2154221, 1, 2010-11-15 13:12:54

5, 45202152, 2, 2010-11-15 13:12:54

 

status 1 = manutencao

status 2 = reprovado

 

SELECT m.*
FROM table m
INNER JOIN table n ON m.ecode = n.ecode
WHERE m.status = 1 AND n.status = 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai pessoal, só para dar o feedback, sem sucesso algum.

Nao entendi como fazer o ultimo exemplo posta ai.

Para melhorar o exemplo do que quero que é exatamente o que Motta postou referente ao outro topico, criei até uma tabela exemplo para testar nela e tudo que eu vi testei nela e continuei sem sucesso, inclusice do topico que o Motta indicou, também não teve feedback.

 

codigo|nome |tipo

1 |amilton |quadrado

2 |amilton |bola

3 |lixo |bola

4 |cesta |quadrado

 

Preciso fazer uma select que me liste o nome de quem tenha como tipo ('bola' e 'quadrado')

Como registro nao pode ser ao mesmo tempo bola and quadrado, ai que vem a dificuldade

Tentei usar o exemplo com exists que consta no topico que o Motta indicou, mas listou também o nome que eu não queria.

Nesse caso tem que me retornar o nome somente 'amilton'

Então fica ai a duvida em aberto novamente

 

Agradeço a atenção de todos e obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente algo assim :

 

SELECT *
FROM TABELA T1
WHERE ocorrencia = 'manutencao'
AND EXISTS (SELECT NULL
            FROM   TABELA T2
            WHERE  T2.CODIGO = T1.CODIGO
            AND    OCORRENCIA = 'reprovado')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, dando um feedback ao pessoal, especialmente ao usuario Motta.

Funcionou certinho, poderiamos inclusive fazer de outra meneira também, só que é mais complicada que é uma select dentro da outra que também funcinou, mas o exemplo com EXISTS funcionou melhor

Se baseando na tabela exemplo que postei acima e o script do Motta, ficaria assim a select para cumprir o proposto acima também descrito

 

SELECT nome from teste t1 where tipo='quadrado'

and exists (select nome from teste t2 where t1.nome = t2.nome and tipo='bola')

 

Respostas acima falei que não havia conseguido com o exists, pois devia estar fazendo alguma coisa errada, mas com a ajuda do amigo Motta, obtive sucesso.

 

Obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.