Ir para conteúdo
Fórum Script Brasil
  • 0

Select com subselect e condicional (Invalid use of group function)


mnmn

Pergunta

Olá pessoal, poderiam me ajudar?

 

Tenho as seguintes tabelas:

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

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...