Problemas com inner join
Server: Msg 8120, Level 16, State 1, Line 17
Column ´DAUTOR.NOME´ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 17
Column ´DAUTOR.SOBRENOME´ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 17
Column ´DDOC.TITULO´ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
As mensagens acima acontecem sempre que rodo a seguinte query
SELECT COUNT(DMOV.DATA_EMP)AS ´QUANT. EMPREST.´, DAUTOR.NOME, DAUTOR.SOBRENOME, DDOC.TITULO
FROM ((DAUTOR INNER JOIN DDOCAUTO
ON DAUTOR.COD_AUTOR = DDOCAUTO.COD_AUTOR)
INNER JOIN DMOV
ON DDOCAUTO.COD_DOC = DMOV.COD_DOC)
INNER JOIN DDOC
ON DMOV.COD_DOC = DDOC.COD_DOC
where data_emp between ´2007-02-05 00:00:00.000´ and ´2007-06-19 14:00:00.000´
GROUP BY dmov.cod_doc
eu gostaria de montar esta query, e infelizmente, da o erro acima alguem sabe como resolver /???
desde já agradeço
abraços !!!
Column ´DAUTOR.NOME´ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 17
Column ´DAUTOR.SOBRENOME´ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Server: Msg 8120, Level 16, State 1, Line 17
Column ´DDOC.TITULO´ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
As mensagens acima acontecem sempre que rodo a seguinte query
SELECT COUNT(DMOV.DATA_EMP)AS ´QUANT. EMPREST.´, DAUTOR.NOME, DAUTOR.SOBRENOME, DDOC.TITULO
FROM ((DAUTOR INNER JOIN DDOCAUTO
ON DAUTOR.COD_AUTOR = DDOCAUTO.COD_AUTOR)
INNER JOIN DMOV
ON DDOCAUTO.COD_DOC = DMOV.COD_DOC)
INNER JOIN DDOC
ON DMOV.COD_DOC = DDOC.COD_DOC
where data_emp between ´2007-02-05 00:00:00.000´ and ´2007-06-19 14:00:00.000´
GROUP BY dmov.cod_doc
eu gostaria de montar esta query, e infelizmente, da o erro acima alguem sabe como resolver /???
desde já agradeço
abraços !!!
Bolomaster
Curtidas 0
Respostas
Marcioabreu
19/06/2007
SELECT COUNT(DMOV.DATA_EMP) AS [QUANT EMPREST], NOME, SOBRENOME, TITULO
FROM DAUTOR INNER JOIN DDOCAUTO ON DAUTOR.COD_AUTOR = DDOCAUTO.COD_AUTOR INNER JOIN DMOV ON DDOCAUTO.COD_DOC = DMOV.COD_DOC INNER JOIN DDOC ON DMOV.COD_DOC = DDOC.COD_DOC
where DateExpense between convert(datetime,´02/05/2007´,103) and convert(datetime,´19/06/2007´,103)
GROUP BY dmov.cod_doc, nome, sobrenome, titulo
ORDER
BY dmov.cod_doc
-xx-xxx--xxx-xx-
A menos que vc tenha campos com os memos nomes em diferentes tabelas, vc não precisa mencionar a tabela.campo no select statement. uma vez que vc esta incluindo a tabela no inner join o SQL vai ´preparar´ os dados do From antes de realizar o selecionar de select. outro detalhe é que vc não precisa de () no inner join. e se vc quiser colunas com dupla palavra vc usa [] como padrão... ex. ncomp as [nome completo]
um abraço e espero que tenha ajudado...
FROM DAUTOR INNER JOIN DDOCAUTO ON DAUTOR.COD_AUTOR = DDOCAUTO.COD_AUTOR INNER JOIN DMOV ON DDOCAUTO.COD_DOC = DMOV.COD_DOC INNER JOIN DDOC ON DMOV.COD_DOC = DDOC.COD_DOC
where DateExpense between convert(datetime,´02/05/2007´,103) and convert(datetime,´19/06/2007´,103)
GROUP BY dmov.cod_doc, nome, sobrenome, titulo
ORDER
BY dmov.cod_doc
-xx-xxx--xxx-xx-
A menos que vc tenha campos com os memos nomes em diferentes tabelas, vc não precisa mencionar a tabela.campo no select statement. uma vez que vc esta incluindo a tabela no inner join o SQL vai ´preparar´ os dados do From antes de realizar o selecionar de select. outro detalhe é que vc não precisa de () no inner join. e se vc quiser colunas com dupla palavra vc usa [] como padrão... ex. ncomp as [nome completo]
um abraço e espero que tenha ajudado...
GOSTEI 0
Bolomaster
19/06/2007
Deu certo kra valeu agora quero por exemplo nao repetir os titulos ai coloquei um DISTINCT e deu o seguinte erro....
Server: Msg 156, Level 15, State 1, Line 42
Incorrect syntax near the keyword ´DISTINCT´.
Segue abaixo a query
SELECT COUNT(DMOV.DATA_EMP) AS [QUANT EMPREST], (NOME + ´ ´ +SOBRENOME) AS [AUTOR], DISTINCT(TITULO)
FROM DAUTOR INNER JOIN DDOCAUTO ON DAUTOR.COD_AUTOR = DDOCAUTO.COD_AUTOR INNER JOIN DMOV ON DDOCAUTO.COD_DOC = DMOV.COD_DOC INNER JOIN DDOC ON DMOV.COD_DOC = DDOC.COD_DOC
where DATA_EMP between convert(datetime,´02/05/2007´,103) and convert(datetime,´19/06/2007´,103)
GROUP BY dmov.cod_doc, nome, sobrenome, titulo
[color=green:5c9d8c3753]Texto do post editado. Favor não postar tudo em maiúsculas[/color:5c9d8c3753]
Server: Msg 156, Level 15, State 1, Line 42
Incorrect syntax near the keyword ´DISTINCT´.
Segue abaixo a query
SELECT COUNT(DMOV.DATA_EMP) AS [QUANT EMPREST], (NOME + ´ ´ +SOBRENOME) AS [AUTOR], DISTINCT(TITULO)
FROM DAUTOR INNER JOIN DDOCAUTO ON DAUTOR.COD_AUTOR = DDOCAUTO.COD_AUTOR INNER JOIN DMOV ON DDOCAUTO.COD_DOC = DMOV.COD_DOC INNER JOIN DDOC ON DMOV.COD_DOC = DDOC.COD_DOC
where DATA_EMP between convert(datetime,´02/05/2007´,103) and convert(datetime,´19/06/2007´,103)
GROUP BY dmov.cod_doc, nome, sobrenome, titulo
[color=green:5c9d8c3753]Texto do post editado. Favor não postar tudo em maiúsculas[/color:5c9d8c3753]
GOSTEI 0
Marcioabreu
19/06/2007
pelo que eu entendi, vc tem uam cross table...
Eu sugiro que vc faça uma query para os autores com os respectivos codigos (primary keys) por uma select distinct, daí vc adiciona a nova tabela através do inner join e vc vai ter o resultado esperado... o Distinct vai trazer mais de um elemento da tabela onde ele está pesquisando, mas apenas o retira uma vez este elemento ´DESTINTO´, essa é a única saída sem utilizar cross tables...
Eu sugiro que vc faça uma query para os autores com os respectivos codigos (primary keys) por uma select distinct, daí vc adiciona a nova tabela através do inner join e vc vai ter o resultado esperado... o Distinct vai trazer mais de um elemento da tabela onde ele está pesquisando, mas apenas o retira uma vez este elemento ´DESTINTO´, essa é a única saída sem utilizar cross tables...
GOSTEI 0
Bolomaster
19/06/2007
Blz, resolvi meu problema criei uma tabela, utilizando o select into, e depois disso, eu consegui colocar o distinct, mas nao era exatamente o que eu queria, mas funcionou
ok
muito obrigado e o topico ja pode ser fechado
ok
muito obrigado e o topico ja pode ser fechado
GOSTEI 0