• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Biscoito111

[ENCERRAR]Porque dá erro?

9 mensagens neste tópico

Boas pessoal :P

Porque é que dá este erro ...

(group by editoras.nome,genero

*

ERRO na linha 14:

ORA-00933: comando SQL não foi terminado correctamente)

...no seguinte código com uma query?

--------------------------------------------------------------------------------

select editoras.nome,

genero,

max(unidades_vendidas),

min(unidades_vendidas),

avg(unidades_vendidas),

count(titulo) Nlivros

from editoras,livros,autores

where autores.nome <>

                      (select autores.nome

                       from autores

                       where autores.nome like 'Paulo Loureiro')

and livros.CODIGO_EDITORA =editoras.CODIGO_EDITORA and livros.CODIGO_AUTOR = autores.CODIGO_AUTOR

order by 1,2,3

group by editoras.nome,genero;

--------------------------------------------------------------------------------

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

enganaste-te.

o group by é depois do where.

obrigado na mesma mas eu já tirei a dúvida  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

biscoito.. sabes ler??

já agora..

além de colocares primeiro o GROUP BY e só depois o ORDER BY, troca também <> por NOT IN  ou melhor ainda.. troca aquilo tudo que está dentro de parenteses por <> 'Paulo Loureiro'.. por que aquela query interna não está lá a fazer nada.. e o operador LIKE também não.. uma vez que não usas qualquer caracter "wild card".. enfim.. revê a query toda! LOL :P

e vê se abres os olhinhos!! LOL :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

continuo a dizer k o k disseste "group by e só depois o order by" está mal e que eu sei ler.tas a contradizer-te.

por esta frase tas a dizer k tenho de por o group by depois do order by e não é, é antes e tu contradizes aki "além de colocares primeiro o GROUP BY e só depois o ORDER BY".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Indique o número máximo, mínimo e médio de unidades vendidas e a quantidade de livros

de cada género e de cada editora. Exclua os títulos cujo nome do autor seja ‘Paulo

Loureiro’ e resultados colectivos que apresentem um número máximo inferior ou igual a

10000. Ordene por editora, género e depois por número máximo de unidades vendidas.

select editoras.nome,

genero,

max(unidades_vendidas),

min(unidades_vendidas),

avg(unidades_vendidas),

count(titulo) Nlivros

from editoras,livros,autores

where autores.nome <> 

            (select autores.nome

            from autores

            where autores.nome like 'Paulo Loureiro')       

and livros.CODIGO_EDITORA =editoras.CODIGO_EDITORA and livros.CODIGO_AUTOR = autores.CODIGO_AUTOR

having max(unidades_vendidas)>10000

group by editoras.nome,genero

order by 1,2,3;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes-me explicar como se faz este?

14. Construa o output. (Os livros de informática, o seu preço, o preço médio dos livros

editados por esse autor e a diferença desse preço médio)

TITULO PRECO PRECO_MED PRECO-PREC

-------------------------------------------- --------- --------- ----------

Microsoft Office 2000 para todos 5500 5950 -450

Microsoft Office 2000 sem fronteiras 6400 5950 450

Fundamental do Word 2000 4800 4800 0

Domine a 110% Word 2000 4400 4400 0

Oracle 8 - Curso completo 4960 4960 0

Windows NT Server 4 para profissionais 7900 7200 700

TCP/IP em redes Microsoft para profissionais 6500 7200 -700

Windows NT Server 4 Curso Completo 6450 6450 0

Tecnologia dos Sistemas Distribuídos 4950 4950 0

Redes Locais em Windows 98 e 95 4400 4400 0

Tecnologia de Base de Dados 4950 4950 0

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

continuo a achar que não sabes ler muito bem! LOL

em português..  " e " !=  " é "      percebes?

portanto.. o que eu disse foi:

group by e só depois o order by

o que quer dizer:  tens de colocar na tua query, PRIMEIRO o GROUP BY e só DEPOIS colocas o ORDER BY!!! percebeste desta vez?  :wallbash:

inté! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Select * from tabela where campo='dados' group by campo order by campo...

Pronto acaba aqui a discussão!

Atenção aqui:

(select autores.nome

                      from autores

                      where autores.nome like 'Paulo Loureiro')

Se esta conculta devolver mais que um registo dá logo erro, faz um select MAX(autores.nome)... assim de certeza que só te devolve um valor.

Sugeria:

select editoras.nome,

genero,

max(unidades_vendidas) as max_unidades_vendidas,

min(unidades_vendidas) as min_unidades_vendidas,

avg(unidades_vendidas) as med_unidades_vendidas,

count(titulo) as Nlivros

from editoras,livros,autores

where autores.nome <>

            (select MAX(autores.nome)

            from autores

            where autores.nome like 'Paulo Loureiro')     

and (livros.CODIGO_EDITORA = editoras.CODIGO_EDITORA) and (livros.CODIGO_AUTOR = autores.CODIGO_AUTOR)

having max(unidades_vendidas)>10000

group by editoras.nome,genero

order by 1,2,3;

E é tudo, axo....

Quando a tua resposta2:

que é isto:

Microsoft Office 2000 para todos 5500 5950 -450

Microsoft Office 2000 sem fronteiras 6400 5950 450

Fundamental do Word 2000 4800 4800 0

Domine a 110% Word 2000 4400 4400 0

Oracle 8 - Curso completo 4960 4960 0

Windows NT Server 4 para profissionais 7900 7200 700

TCP/IP em redes Microsoft para profissionais 6500 7200 -700

Windows NT Server 4 Curso Completo 6450 6450 0

Tecnologia dos Sistemas Distribuídos 4950 4950 0

Redes Locais em Windows 98 e 95 4400 4400 0

Tecnologia de Base de Dados 4950 4950 0

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora