Usuário com melhor resposta
Erro no retorno da query

Pergunta
-
Boa noite, colegas.
Estou com essa situação abaixo:
select cliente.*, parcela.data_vencimento from tbl_cliente as cliente
inner join tbl_acordo as acordo
on cliente.id_cliente = acordo.id_cliente
inner join tbl_parcela_acordo as parcela
on parcela.id_acordo = acordo.id_acordo
where (DAY(data_nascimento) = DAY(GETDATE()) AND MONTH(data_nascimento) = MONTH(GETDATE()) AND YEAR(data_vencimento) = YEAR(GETDATE()) AND (id_status = 12))
or
(DAY(data_vencimento) = DAY(GETDATE()+1) AND MONTH(data_vencimento) = MONTH(GETDATE()+1) AND YEAR(data_vencimento) = YEAR(GETDATE()+1) AND (id_status = 12))
Porém quando executo recebo a mensagens Retorna erro Msg 209, Level 116, State 1, Line 8 - Ambiguous colunm name "id_status."
Abs,
Respostas
-
Boa noite,
Pela mensagem de erro, você deve ter uma coluna chamada id_status em mais de uma tabela envolvida na query, então será necessário colocar o Alias da tabela antes do nome da coluna para indicar qual coluna de qual tabela deve ser utilizada.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 20 de setembro de 2016 15:42
- Marcado como Resposta Robson William Silva quinta-feira, 22 de setembro de 2016 13:31
Todas as Respostas
-
Boa noite,
Pela mensagem de erro, você deve ter uma coluna chamada id_status em mais de uma tabela envolvida na query, então será necessário colocar o Alias da tabela antes do nome da coluna para indicar qual coluna de qual tabela deve ser utilizada.
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 20 de setembro de 2016 15:42
- Marcado como Resposta Robson William Silva quinta-feira, 22 de setembro de 2016 13:31
-
-
Procure declara todos os campos de suas tabelas, assim você não declara nada repetido, exemplo
select idcliente = cliente.id, nome cliente = cliente.nome, cliente.endereco, nome_produto = produto.nome, idproduto = produto.id from ......
Assim não vai mais apresentar este tipo de erro
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br- Sugerido como Resposta Código Expresso sexta-feira, 23 de setembro de 2016 00:58
-
-
Não uma coisa é o apelido que cria para seu campo ser exibido na query exemplo
idcliente = cliente.id, idproduto = produto.id,
no retorno de sua query vai receber (idcliente, idproduto) mas ao declarar em seus joins vai usar (cliente.id, produto.id) entendeu ? o que não pode é deixar dois campos com o nome de id em sua query.
Veja aqui exemplos de Stored Procedures em MS SQL
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br- Editado Código Expresso terça-feira, 20 de setembro de 2016 00:22
- Sugerido como Resposta Código Expresso sexta-feira, 23 de setembro de 2016 00:58
-
-
-
Ola Fernando_Martins
Você tem que especificar em qual tabela esta condição "id_status = 12" é atendida. Isto porque a coluna "Id_Status" está contida em mais de uma tabela. Considerei na query abaixo, a existência da coluna "Id_Status" na tabela "tbl_cliente". Se não existir esta coluna nesta tabela, basta alterar o alias da coluna que alterei na query para sua respectiva tabela.
Execute a query abaixo e veja que o erro não irá mais ocorrer.
select cliente.*, parcela.data_vencimento from tbl_cliente as cliente inner join tbl_acordo as acordo on cliente.id_cliente = acordo.id_cliente inner join tbl_parcela_acordo as parcela on parcela.id_acordo = acordo.id_acordo where (DAY(data_nascimento) = DAY(GETDATE()) AND MONTH(data_nascimento) = MONTH(GETDATE()) AND YEAR(data_vencimento) = YEAR(GETDATE()) AND (cliente.id_status = 12)) or (DAY(data_vencimento) = DAY(GETDATE()+1) AND MONTH(data_vencimento) = MONTH(GETDATE()+1) AND YEAR(data_vencimento) = YEAR(GETDATE()+1) AND (cliente.id_status = 12))
Abraços
Ricardo Lacerda
- Editado Ricardo Lacerda terça-feira, 20 de setembro de 2016 14:16
-
Ricardo ao executar esse query eu recebo o seguinte erro:
Msg 209, Level 16, State 1, Line 6
Ambiguous column name 'id_status'.E realmente o id_status está em mais de uma tabela, porém a informação é para vir da tabela (tbl_despesa_parceiro).
Abs.
-
OK! Mas esta tabela (tbl_despesa_parceiro) não pertence à sua query. Execute o procedimento abaixo
select cliente.*, parcela.data_vencimento from tbl_cliente as cliente inner join tbl_acordo as acordo on cliente.id_cliente = acordo.id_cliente inner join tbl_parcela_acordo as parcela on parcela.id_acordo = acordo.id_acordo where (DAY(data_nascimento) = DAY(GETDATE()) AND MONTH(data_nascimento) = MONTH(GETDATE()) AND YEAR(data_vencimento) = YEAR(GETDATE()) AND (parcela.id_status = 12)) or (DAY(data_vencimento) = DAY(GETDATE()+1) AND MONTH(data_vencimento) = MONTH(GETDATE()+1) AND YEAR(data_vencimento) = YEAR(GETDATE()+1) AND (parcela.id_status = 12))
Ricardo Lacerda
- Editado Ricardo Lacerda terça-feira, 20 de setembro de 2016 14:08
-
-
-
-
Então Fernando, esta query deveria funcionar.
select cliente.*, parcela.data_vencimento from tbl_cliente as cliente inner join tbl_acordo as acordo on cliente.id_cliente = acordo.id_cliente inner join tbl_parcela_acordo as parcela on parcela.id_acordo = acordo.id_acordo where (DAY(data_nascimento) = DAY(GETDATE()) AND MONTH(data_nascimento) = MONTH(GETDATE()) AND YEAR(data_vencimento) = YEAR(GETDATE()) AND (cliente.id_status = 12)) or (DAY(data_vencimento) = DAY(GETDATE()+1) AND MONTH(data_vencimento) = MONTH(GETDATE()+1) AND YEAR(data_vencimento) = YEAR(GETDATE()+1) AND (cliente.id_status = 12))
Execute esta query e me diga o que resultou.
Ricardo Lacerda
-
-
Fernando
Vai ser difícil te ajudar desta maneira! Se você não descrever o seu problema da forma correta.
STRING???
Se não está resultando corretamente os dados você terá que rever as suas restrições na query.
Então a query não está retornando o erro mais correto?
Ricardo Lacerda
- Editado Ricardo Lacerda terça-feira, 20 de setembro de 2016 15:38
-
Quando executo a query ele retorna todos os campos sem nenhuma informação.
So com os nomes da tabelas.
- Editado Fernando_Martins terça-feira, 20 de setembro de 2016 15:44 Novas informações
-
-
-
Como já falei para apresentar a query você da um apelido diferente para cada uma delas,
idstatus_produto = produtos.idstatus, idstatus_cliente = clientes.idstatus,
assim resolver o problema da query, e para fazer referencia a uma delas por exemplo na clausula where utilize o apelido da tabela ou o próprio nome da tabela
Com o nome da tabela ( where produtos.idstatus = 12 )
com o apelido ( from produtos as pro where pro.idstatus = 12)
Veja aqui exemplos de Stored Procedures em MS SQL
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br- Sugerido como Resposta Código Expresso sexta-feira, 23 de setembro de 2016 00:58
-
-
-
O código em si está certo José, mas quando executo tenho o erro Msg 207, Level 16, State 1, Line 24
Invalid column name 'id_status'.Mas se eu tiro AND (parcela.id_status = 12) e deixo dessa maneira AND (cliente.id_status = 12) não aparece o erro mencionado acima, porém as tabelas aparecem em branco conforme print que adicionei.
-
-
-
-
-
-
-
Então você precisa de um JOIN na tabela que esta faltando para poder fazer referencia a ela
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br -
-
Da mesma maneira que fez os outros, não conheço a estrutura de seu banco de dados para ajudar a construir a query.
Se a resposta contribuiu com seu aprendizado por favor marque como Útil
Se solucionou seu problema por favor marque como Resposta
Atenção, se seu problema foi resolvido não deixe o post aberto
Visite : www.codigoexpresso.com.br- Sugerido como Resposta Código Expresso sexta-feira, 23 de setembro de 2016 00:59
-
Bom dia Fernando_Martins,
Alguma das respostas nesta thread solucionou seu problema?
Nós gostaríamos de fechar essa thread se possível, mas desejamos saber se você teve sua dúvida resolvida.
Por gentileza, marque a respostar que te ajudou clicando em "Marcar como Resposta".Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-