Opa,

​

2015-06-08 15:00 GMT-03:00 Matheus Saraiva <[email protected]>:

> Tenho as seguintes tabelas:
> CREATE TABLE "QUARTOS"
> (
>     "numero_quarto" VARCHAR(5) NOT NULL,
>     "tipo_quarto" INTEGER NOT NULL,
>     "valor_quarto" NUMERIC(7,2) NOT NULL,
>     "capacidade_quarto" SMALLINT NOT NULL,
>     CONSTRAINT TIPOQUARTO_FK FOREIGN KEY("tipo_quarto") REFERENCES
> "TIPOSQUARTO"("id_tipoquarto") ON UPDATE CASCADE,
>     CONSTRAINT QUARTOS_PK PRIMARY KEY(numero_quarto)
> );
>
> CREATE TABLE "PESSOAS"
> (
>     "id_pessoa" SERIAL NOT NULL,
>     "nome_pessoa" VARCHAR(50) NOT NULL,
>     "endereco_pessoa" INTEGER NOT NULL,
>     "telefone_pessoa" VARCHAR(14),
>     "email_pessoa" VARCHAR(100),
>     "login_pessoa" VARCHAR(20),
>     "senha_pessoa" VARCHAR(32),
>     "tipo_pessoa" SMALLINT NOT NULL DEFAULT 1,
>     "endnum_pessoa" VARCHAR(5) NOT NULL,
>     CONSTRAINT PESSOAS_EMAIL_UK UNIQUE("email_pessoa"),
>     CONSTRAINT PESSOAS_LOGIN_UK UNIQUE("login_pessoa"),
>     CONSTRAINT ENDERECO_FK FOREIGN KEY("endereco_pessoa") REFERENCES
> "ENDERECOS"("id_endereco") ON UPDATE CASCADE,
>     CONSTRAINT PESSOAS_PK PRIMARY KEY(id_pessoa)
> );
>
> CREATE TABLE "CLIENTES"
> (
>     "pessoa_cliente" INTEGER NOT NULL,
>     "rg_cliente" VARCHAR(20) NOT NULL,
>     "cpf_cliente" VARCHAR(11) NOT NULL,
>     CONSTRAINT PESSOA_FK FOREIGN KEY("pessoa_cliente") REFERENCES
> "PESSOAS"("id_pessoa") ON UPDATE CASCADE,
>     CONSTRAINT clientes_rg_ukey UNIQUE("rg_cliente"),
>     CONSTRAINT clientes_cpf_ukey UNIQUE("cpf_cliente"),
>     CONSTRAINT CLIENTES_PK PRIMARY KEY(pessoa_cliente)
> );
>
> CREATE TABLE "ESTADIAS"
> (
>     "id_estadia" SERIAL NOT NULL,
>     "cliente_estadia" INTEGER NOT NULL,
>     "quarto_estadia" VARCHAR(5) NOT NULL,
>     "entrada_estadia" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
>     "saida_estadia" TIMESTAMP(0),
>     "valor_estadia" NUMERIC(7,2),
>     "valortotal_estadia" NUMERIC(7,2)
>     CONSTRAINT CLIENTE_FK FOREIGN KEY("cliente_estadia") REFERENCES
> "CLIENTES"("pessoa_cliente"),
>     CONSTRAINT QUARTO_FK FOREIGN KEY("quarto_estadia") REFERENCES
> "QUARTOS"("numero_quarto"),
>     CONSTRAINT ESTADIA_CLI_QUA_ENT_UKEY
> UNIQUE("cliente_estadia","quarto_estadia","entrada_estadia"),
>     CONSTRAINT ESTADIAS_PK PRIMARY KEY(id_estadia)
> );
>
>
> CREATE TABLE "LIGACOES"
> (
>     "quarto_ligacao" VARCHAR(5) NOT NULL,
>     "datahora_ligacao" TIMESTAMP(0) NOT NULL DEFAULT CURRENT_TIMESTAMP,
>     "numero_ligacao" VARCHAR(14) NOT NULL,
>     "duracao_ligacao" NUMERIC(7,2),
>     "valortotal_ligacao" NUMERIC(7,2),
>     "tipo_ligacao" INTEGER NOT NULL DEFAULT 1,
>     CONSTRAINT LIGACOES_PK PRIMARY
> KEY("quarto_ligacao","datahora_ligacao"),
>     CONSTRAINT QUARTO_FK FOREIGN KEY("quarto_ligacao") REFERENCES
> "QUARTOS"("numero_quarto"),
>     CONSTRAINT TIPO_FK FOREIGN KEY(tipo_ligacao) REFERENCES
> "TIPOSLIGACAO"("id_tipoligacao")
> );
>
>
> Meu select está dando erro dizendo que eu preciso usar
> "PESSOAS".nome_pessoa na clausula GROUP BY. Seu eu fiser como pede ela
> passa a pedir as outras colunas também.
>
> SELECT
>     "PESSOAS".nome_pessoa,
>     "CLIENTES".rg_cliente,
>     "CLIENTES".cpf_cliente,
>     "ESTADIAS".quarto_estadia,
>     "ESTADIAS".entrada_estadia,
>     CURRENT_DATE - DATE("ESTADIAS".entrada_estadia) AS diarias,
>     "ESTADIAS".valor_estadia,
>     SUM("LIGACOES".valortotal_ligacao) AS totalligacoes
> FROM
>     "ESTADIAS"
> JOIN
>     "PESSOAS" ON "PESSOAS".id_pessoa = "ESTADIAS".cliente_estadia
> JOIN
>     "CLIENTES" ON "CLIENTES".pessoa_cliente =
> "ESTADIAS".cliente_estadia
> JOIN
>     "LIGACOES" ON "LIGACOES".quarto_ligacao = "ESTADIAS".quarto_estadia
> AND
>     "LIGACOES".datahora_ligacao >= "ESTADIAS".entrada_estadia
> WHERE
>     "ESTADIAS".id_estadia = 1
>
>
> Segue o erro
>
>
> "ERROR:  column "PESSOAS.nome_pessoa" must appear in the GROUP BY clause
> or be used in an aggregate function
> LINE 2:     "PESSOAS".nome_pessoa,
>
​
Sim, você está usando o SUM, e para isso precisa do GROUP BY, não tem como
fugir, além disso, todas as colunas do teu SELECT terão que aparecer no
GROUP BY, isso é por causa da função de agregação SUM.​


​Diga qual o resultado esperado, assim talvez possamos de ajudar neste
SELECT.​

>             ^"
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>


​Atenciosamente​

-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a