AJuda SQL + ORACLE
18/12/2009
0
Bom dia Galera,
Seguinte, tenho que fazer um exercicio :
9. Executar uma Query que realiza a leitura nas tabelas LOCACAO, CLIENTE, COPIA, FILME e GENERO, utilizando subquery do tipo IN-LINE VIEW, para mostrar os filmes de clientes que realizaram mais que 3 locações e mostrando o gênero do mesmo. Mostrar o resultado, seguindo os itens exemplificados abaixo:
Cliente Gênero Filme Ano Produção
----------------------- ----------- --------------------------------- ------------
...
consegui trazer somente o nome dos clientes que tem mais de 3 locações, mas quando adiciono os outros campoas, dá erro dizendo que não é expressão group by... poderiam me ajudar...
código que somente traz o nome do cliente
código qeu teoricamente era para trazer tudo:
quem puder me ajudar agradeço !
Seguinte, tenho que fazer um exercicio :
9. Executar uma Query que realiza a leitura nas tabelas LOCACAO, CLIENTE, COPIA, FILME e GENERO, utilizando subquery do tipo IN-LINE VIEW, para mostrar os filmes de clientes que realizaram mais que 3 locações e mostrando o gênero do mesmo. Mostrar o resultado, seguindo os itens exemplificados abaixo:
Cliente Gênero Filme Ano Produção
----------------------- ----------- --------------------------------- ------------
...
consegui trazer somente o nome dos clientes que tem mais de 3 locações, mas quando adiciono os outros campoas, dá erro dizendo que não é expressão group by... poderiam me ajudar...
código que somente traz o nome do cliente
SELECT CLI.TX_NOME_CLIENTE AS "Cliente" FROM (SELECT ID_CLIENTE, ID_COPIA FROM LOCACAO) LOC JOIN (SELECT ID_CLIENTE, TX_NOME_CLIENTE FROM CLIENTE) CLI ON (cli.id_cliente = LOC.id_cliente) JOIN (SELECT ID_FILME, ID_COPIA FROM COPIA) CO ON (LOC.ID_COPIA = CO.ID_COPIA) JOIN (SELECT ID_FILME, ID_GENERO, TX_TITULO_FILME, TX_ANO_FILME FROM FILME) FI ON (FI.ID_FILME = CO.ID_FILME) GROUP BY CLI.tx_nome_cliente HAVING COUNT(LOC.ID_CLIENTE) >= 3 ORDER BY CLI.tx_nome_cliente
código qeu teoricamente era para trazer tudo:
SELECT CLI.TX_NOME_CLIENTE AS "Cliente", (SELECT tx_descr_genero FROM GENERO WHERE ID_GENERO = FI.ID_GENERO) as "Gênero", FI.tx_titulo_filme AS "Filme", FI.TX_ANO_FILME AS "Ano Produção" FROM (SELECT ID_CLIENTE, ID_COPIA FROM LOCACAO) LOC JOIN (SELECT ID_CLIENTE, TX_NOME_CLIENTE FROM CLIENTE) CLI ON (cli.id_cliente = LOC.id_cliente) JOIN (SELECT ID_FILME, ID_COPIA FROM COPIA) CO ON (LOC.ID_COPIA = CO.ID_COPIA) JOIN (SELECT ID_FILME, ID_GENERO, TX_TITULO_FILME, TX_ANO_FILME FROM FILME) FI ON (FI.ID_FILME = CO.ID_FILME) GROUP BY CLI.tx_nome_cliente HAVING COUNT(LOC.ID_CLIENTE) >= 3 ORDER BY CLI.tx_nome_cliente
quem puder me ajudar agradeço !
Bruno Mello
Curtir tópico
+ 0
Responder
Posts
16/05/2010
Danielle Lemos
Bruno,
Toda coluna referenciada no select tbm deve ser referenciada no group by a menos q seja uma função de agregação (sum, avg, count).
Ex: select id_cliente, id_produto, count(1)
from vendas
group by id_cliente, id_produto
having count(1) > 2
Toda coluna referenciada no select tbm deve ser referenciada no group by a menos q seja uma função de agregação (sum, avg, count).
Ex: select id_cliente, id_produto, count(1)
from vendas
group by id_cliente, id_produto
having count(1) > 2
Responder
Clique aqui para fazer login e interagir na Comunidade :)