Problemas com inner join
19/06/2007
0
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
Curtir tópico
+ 0Posts
19/06/2007
Marcioabreu
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
20/06/2007
Bolomaster
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
20/06/2007
Marcioabreu
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
20/06/2007
Bolomaster
ok
muito obrigado e o topico ja pode ser fechado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)