Autor Tópico: [RESOLVIDO] Select não funciona - não encontrei o erro  (Lida 672 vezes)

joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
[RESOLVIDO] Select não funciona - não encontrei o erro
« Online: Julho 12, 2016, 11:18:46 am »
Olá pessoal, não encontrei meu erro, alguém com outra visão pode me ajudar? Valew!

Código: [Selecionar]
SELECT
   (sum(d.total) , sum(m.credito))
FROM
   oslojadetalhe d INNER JOIN clifor c ON d.id_cliente = c.REGISTRO
   INNER JOIN clifor c ON m.id_cliente = c.REGISTRO
   INNER JOIN oslojamestre m ON d.id_cliente = c.REGISTRO
WHERE
   (c.CLIFOR = '3') AND
   (d.data_os = '2016-11-07') AND
   (d.status_laboratorio <> '') AND
   (m.forma_pagamento <= '4')
« Última modificação: Julho 21, 2016, 03:15:57 pm por joeltonsilva »

Ronyan Alves

  • Administrator
  • Avançado
  • *****
  • Mensagens: 353
Re:Select não funciona - não encontrei o erro
« Responder #1 Online: Julho 12, 2016, 11:32:22 am »
Isso são duas colunas:

sum(d.total) , sum(m.credito)

Ou concatenadas:
CONCAT(sum(d.total) , sum(m.credito)) ?
--

Ronyan Alves
Equipe Scriptcase

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Select não funciona - não encontrei o erro
« Responder #2 Online: Julho 12, 2016, 01:26:08 pm »
SUM é uma função de agregação e, portanto, exige o GROUP BY
Abraços
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Select não funciona - não encontrei o erro
« Responder #3 Online: Julho 12, 2016, 01:35:29 pm »
Isso são duas colunas:

sum(d.total) , sum(m.credito)

Ou concatenadas:
CONCAT(sum(d.total) , sum(m.credito)) ?


Melhorei o que estou querendo na verdade...

SELECT
   sum((d.total) - (m.credito)) AS diferenca
FROM
   oslojadetalhe d INNER JOIN clifor c ON d.id_cliente = c.REGISTRO
   INNER JOIN clifor c ON m.id_cliente = c.REGISTRO
   INNER JOIN oslojamestre m ON d.id_cliente = c.REGISTRO
WHERE
   (c.CLIFOR = '3') AND
   (d.data_os = '2016-11-07') AND
   (d.status_laboratorio <> '') AND
   (m.forma_pagamento <= '4')


joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Select não funciona - não encontrei o erro
« Responder #4 Online: Julho 12, 2016, 01:37:11 pm »
Melhorei o que estou querendo na verdade...
SUM é uma função de agregação e, portanto, exige o GROUP BY
Abraços
SELECT
   sum((d.total) - (m.credito)) AS diferenca
FROM
   oslojadetalhe d INNER JOIN clifor c ON d.id_cliente = c.REGISTRO
   INNER JOIN clifor c ON m.id_cliente = c.REGISTRO
   INNER JOIN oslojamestre m ON d.id_cliente = c.REGISTRO
WHERE
   (c.CLIFOR = '3') AND
   (d.data_os = '2016-11-07') AND
   (d.status_laboratorio <> '') AND
   (m.forma_pagamento <= '4')


Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Select não funciona - não encontrei o erro
« Responder #5 Online: Julho 12, 2016, 02:35:50 pm »
Continua faltando o group BY
Abraços
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Select não funciona - não encontrei o erro
« Responder #6 Online: Julho 12, 2016, 02:36:57 pm »
Ah. Entendi. OK.  Sem group BY
Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

Allan Medeiros

  • Expert
  • *****
  • Mensagens: 504
    • Email
Re:Select não funciona - não encontrei o erro
« Responder #7 Online: Julho 12, 2016, 02:39:04 pm »
O erro está em m.Id_cliente
Quem é m ?

Allan Medeiros
Analista de Informática
__________________________________________
Companhia de Processamento de Dados da Paraíba
medeiros@codata.pb.gov.br

joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Select não funciona - não encontrei o erro
« Responder #8 Online: Julho 12, 2016, 02:41:26 pm »
O erro está em m.Id_cliente
Quem é m ?



6ª linha
"oslojamestre m"

Kleyber

  • Expert
  • *****
  • Mensagens: 2235
    • Email
Re:Select não funciona - não encontrei o erro
« Responder #9 Online: Julho 12, 2016, 02:48:14 pm »
Acho que os INNER JOIN estão trocados. Ao invés de:

   INNER JOIN clifor c ON m.id_cliente = c.REGISTRO
   INNER JOIN oslojamestre m ON d.id_cliente = c.REGISTRO
   
Deveria ser:

   INNER JOIN clifor c ON d.id_cliente = c.REGISTRO
   INNER JOIN oslojamestre m ON m.id_cliente = c.REGISTRO
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Select não funciona - não encontrei o erro
« Responder #10 Online: Julho 12, 2016, 03:12:50 pm »
Acho que os INNER JOIN estão trocados. Ao invés de:

   INNER JOIN clifor c ON m.id_cliente = c.REGISTRO
   INNER JOIN oslojamestre m ON d.id_cliente = c.REGISTRO
   
Deveria ser:

   INNER JOIN clifor c ON d.id_cliente = c.REGISTRO
   INNER JOIN oslojamestre m ON m.id_cliente = c.REGISTRO

Fiz um teste via phpmyadmin e o erro foi este...
"
SELECT
   sum((d.total) - (m.credito)) AS diferenca
FROM
   oslojadetalhe d INNER JOIN clifor c ON d.id_cliente = c.REGISTRO
   INNER JOIN clifor c ON m.id_cliente = c.REGISTRO
   INNER JOIN oslojamestre m ON d.id_cliente = c.REGISTRO
WHERE
   (c.CLIFOR = '3') AND
   (d.data_os = '2016-11-07') AND
   (d.status_laboratorio <> '') AND
   (m.forma_pagamento <= '4')


#1066 - Tabela/alias 'c' não única
"

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 886
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Select não funciona - não encontrei o erro
« Responder #11 Online: Julho 12, 2016, 03:19:40 pm »
Joelton vc está fazendo inner join na tabela clifor 2x com o mesmo alias.
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

joeltonsilva

  • Avançado
  • ****
  • Mensagens: 360
Re:Select não funciona - não encontrei o erro
« Responder #12 Online: Julho 12, 2016, 03:39:36 pm »
Joelton vc está fazendo inner join na tabela clifor 2x com o mesmo alias.

Verdade... alterei agora está dando outro erro...
SELECT
   sum(d.total - m.credito) AS diferenca
FROM
   oslojadetalhe d INNER JOIN clifor c ON d.id_cliente = c.REGISTRO
   INNER JOIN clifor cl ON m.id_cliente = cl.REGISTRO
   INNER JOIN oslojamestre m ON d.id_cliente = c.REGISTRO
WHERE
   (c.CLIFOR = '3') AND
   (cl.CLIFOR = '3') AND
   (d.data_os = '2016-11-07') AND
   (d.status_laboratorio <> '') AND
   (m.forma_pagamento <= '4')

#1054 - Coluna 'm.id_cliente' desconhecida em 'on clause'
« Última modificação: Julho 12, 2016, 03:41:31 pm por joeltonsilva »

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 886
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Select não funciona - não encontrei o erro
« Responder #13 Online: Julho 12, 2016, 03:42:54 pm »
O nome do campo está correto? Esse select que vc postou por ultimo ainda continua chamando a tabela clifor 2x.
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

Kleyber

  • Expert
  • *****
  • Mensagens: 2235
    • Email
Re:Select não funciona - não encontrei o erro
« Responder #14 Online: Julho 12, 2016, 04:20:49 pm »
... e com os INNER JOINs invertidos ainda.
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net