CREATE TABLE horariofuncionario (
codigo_horariofuncionario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
codigo_statushorariofuncionario INTEGER UNSIGNED NOT NULL,
codigo_funcionario INTEGER UNSIGNED NOT NULL,
horario_horariofuncionario VARCHAR(5) NOT NULL,
data_horariofuncionario VARCHAR(10) NOT NULL,
nomeDiaSemana_horariofuncionario VARCHAR(15) NOT NULL,
PRIMARY KEY(codigo_horariofuncionario),
FOREIGN KEY(codigo_funcionario)
REFERENCES funcionario(codigo_funcionario)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(codigo_statushorariofuncionario)
REFERENCES statushorariofuncionario(codigo_statushorariofuncionario)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE TABLE servicosalao (
codigo_servicosalao INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
codigo_salao INT NOT NULL,
codigo_servico INTEGER UNSIGNED NOT NULL,
preco_servicosalao VARCHAR(20) NULL,
tempo_servicosalao INTEGER UNSIGNED NULL,
descricao_servicosalao VARCHAR(200) NULL,
PRIMARY KEY(codigo_servicosalao),
FOREIGN KEY(codigo_salao)
REFERENCES salao(codigo_salao)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(codigo_servico)
REFERENCES servico(codigo_servico)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE TABLE statushorariofuncionario (
codigo_statushorariofuncionario INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
nome_statushorariofuncionario VARCHAR(30) NOT NULL,
PRIMARY KEY(codigo_statushorariofuncionario)
);
Preciso selecionar os HORARIOFUNCIONARIO.horario_horariofuncionario em que o HORARIOFUNCIONARIO.codigo_statushorariofuncionario seja 1 ou 3 e que não contenha nenhum registro na tabela horariofuncionario em que o HORARIOFUNCIONARIO.horario_horariofuncionario esteja entre o HORARIOFUNCIONARIO.horario_horariofuncionario e o HORARIOFUNCIONARIO.horario_horariofuncionario + SERVICOSALAO.tempo_servicosalao e o HORARIOFUNCIONARIO.codigo_statushorariofuncionario seja igual a 2.
Então tenho a query:
SELECT hf.horario_horariofuncionario
FROM horariofuncionario hf
WHERE hf.codigo_statushorariofuncionario IN (1,3)
HAVING (SELECT COUNT(hf.codigo_horariofuncionario)
FROM horariofuncionario hf
NATURAL JOIN servicosalao ss
WHERE hf.codigo_statushorariofuncionario = 2
AND STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i')
BETWEEN STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') AND
SEC_TO_TIME( SUM( TIME_TO_SEC( STR_TO_DATE(hf.horario_horariofuncionario,'%H:%i') )
+ TIME_TO_SEC( STR_TO_DATE(ss.tempo_servicosalao,'%H:%i') ) ) ) ) < 1;
Está retornando o erro: Invalid use of group function ErrorNr 1111
Pergunta
mnmn
Olá pessoal, poderiam me ajudar?
Tenho as seguintes tabelas:
Preciso selecionar os HORARIOFUNCIONARIO.horario_horariofuncionario em que o HORARIOFUNCIONARIO.codigo_statushorariofuncionario seja 1 ou 3 e que não contenha nenhum registro na tabela horariofuncionario em que o HORARIOFUNCIONARIO.horario_horariofuncionario esteja entre o HORARIOFUNCIONARIO.horario_horariofuncionario e o HORARIOFUNCIONARIO.horario_horariofuncionario + SERVICOSALAO.tempo_servicosalao e o HORARIOFUNCIONARIO.codigo_statushorariofuncionario seja igual a 2.
Então tenho a query:
Está retornando o erro: Invalid use of group function ErrorNr 1111
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.