Logo Hardware.com.br
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas

[Resolvido] Consulta com where em tabela

#1 Por tpcvasco 27/09/2010 - 18:35
Já faz um tempo q não mexo com BD, então estou meio enferujado.

Seguinte, eu preciso fazer um SELECT simples, para obter todas as linhas de uma tabela com um valor menor q X. Ex:

SELECT * FROM tabela WHERE valor < X

O problema é q esse X vem de um SELECT de uma outra tabela. Então, como é q eu junto isso em uma única consulta?

SELECT * FROM tabela WHERE valor < (SELECT valor FROM tabela2)

não funciona...
"Milhouse: - Médicos e bombeiros são heróis.
Bart Simpson: - Olha, as casas continuam pegando fogo e as pessoas continuam doentes. Os verdadeiros heróis são os Schwarzenegger's, os Stallone's, e, em menores proporções, os Vandame's..."
Kakao
Kakao Super Participante Registrado
645 Mensagens 23 Curtidas
#4 Por Kakao
28/09/2010 - 09:45
tpcvasco disse:

SELECT * FROM tabela WHERE valor < (SELECT valor FROM tabela2)

não funciona...


O problema com o seu subselect é que se tabela2 tiver mais de uma linha ele retorna mais de um valor o que não é válido neste caso.

Dependendo da semântica da consulta talvez seja o caso do join como o Ravnus colocou. Se você puder explicar o conteúdo das tabelas talvez seja possível ajudar.
TerraSkilll
TerraSkilll Zumbi Moderador
4K Mensagens 1.2K Curtidas
#5 Por TerraSkilll
28/09/2010 - 09:46
tpcvasco
Raro ver você com uma dúvida, hein rsrsrs. Vamos ver se posso ajudar:

SELECT * FROM tabela WHERE valor < (SELECT valor FROM tabela2)


Acho que o problema é que o seu segundo select tem que retornar um único registro, e por isso precisa ser limitado por um where. Por exemplo:

select * from Produto where valorVenda < (select valorvenda from Venda where idPro = Produto.ID);


Ou, com join (como sugeriu o tiagothiesen):

select Produto.* from Produto inner join Venda on Venda.idPro = Produto.ID where Produto.valorVenda < Venda.valorVenda;

Obs: não manjo muito de inner join. Costumo usar mais o left outer join. A sintaxe é similar, mas o resultado muda de acordo com os dados que você tem:

select Produto.* from Produto left outer join Venda on Venda.idPro = Produto.ID where Produto.valorVenda < Venda.valorVenda;

Abraço.
Contribua para um fórum melhor: pense antes de postar.
"It isn't a contest. Just enjoy the ride." -> Seth Vidal
Hardware.com.br no Youtube!
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#6 Por tpcvasco
28/09/2010 - 12:01
Obrigado, pessoal, a coisa era bem simples mesmo, eu q comi mosca. A dica do Ravnus já me ajudou a resolver.
"Milhouse: - Médicos e bombeiros são heróis.
Bart Simpson: - Olha, as casas continuam pegando fogo e as pessoas continuam doentes. Os verdadeiros heróis são os Schwarzenegger's, os Stallone's, e, em menores proporções, os Vandame's..."
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal