Как я могу сделать, чтобы мой запрос возвращал отличный идентификатор - PullRequest
0 голосов
/ 05 марта 2012

У меня есть таблица, которая помещает некоторый статус в данные.

Например:

Таблица Сан_Пропоста

Proposta_Id    Status_Id   Imovel_Id
1              1           12
2              1           12
3              3           12
4              4           12
5              5           12

Я хочу сделать запрос, который возвращает все значения Imovel_id, у которых status_id равен 3, или 4, или 5, в моей таблице San_Proposta.

Мой запрос возвращает тот же imovel_id (12), более одного раза, потому что существует, status_id равен 3, 4 и 5 этому imovel_id. Как я могу сделать этот запрос, чтобы вернуть только один раз imovel_id, у которого status_id равен 3, 4 или 5 в моей таблице san_proposta?

Это всего лишь пример того, что я хочу,

Мой настоящий запрос таков.

SELECT DISTINCT San_Proposta.Imovel_Id, San_Logradouro.Descricao, San_Endereco.Logradouro, 
San_Imovel.Numero, San_TipoComplemento.Descricao AS Expr1, San_Imovel.Complemento, 
San_Imovel.TipoDsc1, San_Transacao.TransacaoSigla, San_Transacao.Transacao_ID, 
COUNT(San_Proposta.StatusProposta_Id) AS NumeroProposta, 
CASE WHEN SN.ValidaCaptacao = 1 
AND SN.ValidaVenda = 0 
THEN 'AguardandoVenda' ELSE 'Nao' END as FoundInSanNegocio, 
San_Proposta.DataHora 
FROM San_Proposta LEFT JOIN San_Negocio SN 
ON San_Proposta.Proposta_ID = SN.Proposta_ID JOIN San_Imovel 
ON San_Proposta.Imovel_Id = San_Imovel.Imovel_Id JOIN San_Endereco 
ON San_Imovel.Endereco_Id = San_Endereco.Endereco_Id JOIN San_Logradouro 
ON San_Endereco.Logradouro_Id = San_Logradouro.Logradouro_Id JOIN San_TipoComplemento 
ON San_Imovel.TipoComplemento_Id = San_TipoComplemento.TipoComplemento_Id 
JOIN San_Transacao ON San_Imovel.Transacao_ID = San_Transacao.Transacao_ID 
JOIN San_Credenciada ON San_Imovel.Credenciada_Id = San_Credenciada.Credenciada_Id 
WHERE (San_Imovel.Credenciada_Id = 10 OR San_Proposta.Credenciada_Id = 10)
AND San_Proposta.StatusProposta_Id IN (3,4,5,6,7) 
AND San_Proposta.DataHora BETWEEN '20120227' AND DATEADD(day,1,'20120305') 
GROUP BY San_Proposta.Imovel_Id, San_Logradouro.Descricao, San_Endereco.Logradouro, 
San_Imovel.Numero, San_TipoComplemento.Descricao, San_Imovel.Complemento, 
San_Imovel.TipoDsc1, San_Transacao.TransacaoSigla, San_Transacao.Transacao_ID, 
San_Proposta.StatusProposta_Id, SN.ValidaCaptacao, SN.ValidaVenda, San_Proposta.DataHora 
ORDER BY San_Proposta.DataHora DESC 

@ Обновлено

San_Imovel has the Imovel_Id as Primary Key.
San_Proposta has Proposta_Id as Primary Key and Imovel_Id as Foreign Key.
San_Negocio has Negocio_Id as Primary Key and Proposta_Id as Foreign Key.

Ответы [ 3 ]

1 голос
/ 05 марта 2012

попробуйте ключевое слово distinct:

select distinct Imovel_Id
from San_Proposta
where Status_Id   in (3,4,5)

или

select Imovel_Id
from San_Proposta
where Status_Id   in (3,4,5)
group by Imovel_Id
0 голосов
/ 05 марта 2012
Select Distinct Imovel_id from San_Propsta where status_Id in (3,4,5) 
0 голосов
/ 05 марта 2012

Это помогает?

SELECT distinct Imovel_Id FROM San_Proposta WHERE status_id IN(3,4,5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...