Jump to content

[ENCERRAR]Porque dá erro?


Biscoito111
 Share

Recommended Posts

Boas pessoal 😛

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;

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

Tiago Simões

Link to comment
Share on other 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 😛

e vê se abres os olhinhos!! LOL 🙂

Link to comment
Share on other 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".

Tiago Simões

Link to comment
Share on other 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;

Tiago Simões

Link to comment
Share on other 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

Tiago Simões

Link to comment
Share on other 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é! 😄

Link to comment
Share on other 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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.