Ir para conteúdo

Arquivado

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

tiopirata

[Resolvido] Montar query

Recommended Posts

Pessoal

preciso de um help de vcs no meu select

 

 

preciso retonar todos usuarios que possuem carro e moto, exemplo

 

 

select * from tabela where campo_id = id_do_carro e id_da_moto.

 

não posso usar o "IN (XX,XX), pois ele funciona como o ""OR"

quero algo que funciona como "AND", só tras os q tiverem os 2, e não

um dos dois..

 

será que alguem poderia me dar uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

e porque nao usar o AND mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas este seu exemplo é completamente errado mesmo

 

nao pode ser sao paulo e rio ao mesmo tempo

 

tem certeza que nao quer o OR mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não quero usar o "OR" pois se um for verdadeira ele ja traz

preciso que ele retorno só se todas as condiçoes forem verdadeiras.

 

no meu exemplo do rio e sao paulo

quis ilustrar que so traz o empregador das cidades rio e sao paulo

e não empregador de uma delas apenas

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQL 2005.

Essa é minha estrutura real:

 

SELECT * FROM IDIOMAS

Campos da tabela:

CPF (PK,FK,VARCHAR(14),NOT NULL)

ID_IDIOMA (PK,FK,NUMERIC(19,0),NOT NULL)

 

 

Lembrando que preciso fazer um select com 2 ou mais ids,

com returno do tipo "AND".

Exemplo, passo id 1 e 2, quero os resultado que possuem id 1 e 2,

e não os q tenham apenas um ou apenas 2, por isso nao estou usando "IN(1,2)"

pq ele funciona como "OR" e não com "AND".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ve se é por ai que você precisa:

 

create table #temp (pessoinha varchar(100), id_tabelaB int)

insert into #temp values ('A',1)
insert into #temp values ('A',2)
insert into #temp values ('C',1)
insert into #temp values ('D',3)
insert into #temp values ('E',1)
insert into #temp values ('E',2)
insert into #temp values ('G',2)
insert into #temp values ('H',1)
insert into #temp values ('I',1)


select pessoinha 
from #temp 
where id_tabelaB = 1 and pessoinha in (select t.pessoinha from #temp t where t.id_tabelaB = 2 and t.pessoinha = pessoinha)

drop table #temp

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

jus2ka,

Baseado no seu exemplo, montei a query abaixo:

 

select * from tb_idioma idioma1
where idioma1.id_idioma = 1 and
idioma1.cpf in (select idioma2.cpf from tb_idioma idioma2 
		where idioma2.id_idioma = 2 and 
		idioma1.cpf = idioma2.cpf)

mas não retornou os funcionarios que possuem id 1 e 2.

retornaram apenas o id 1.

será que minha query esta errada?

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas não retornou os funcionarios que possuem id 1 e 2.

tiopirata, as pessoas que aparecem sao que tem o id_idioma 1 e 2 por causa desta condição

where idioma1.id_idioma = 1 and
idioma1.cpf in (select idioma2.cpf from tb_idioma idioma2
		where idioma2.id_idioma = 2 and
		idioma1.cpf = idioma2.cpf)
Se você estiver puxando tambem o id_idioma como campo, soh aparece 1 mesmo.

 

Eh isso?

 

Abçs

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.