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,
^"
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral