Jump to content

Search the Community

Showing results for tags 'union'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Q&A Desenvolvimento
    • Perguntas e respostas rápidas
  • Desenvolvimento e Banco de Dados
    • HTML e CSS
    • Java
    • Javascript
    • .NET
    • PHP
    • Python
    • Ruby
    • Mobile
    • Ambientes de Desenvolvimento
    • Arquitetura e Métodos Ágeis
    • Banco de Dados
    • DevOps
    • Desenvolvimento de Games
    • E-Commerce e Pagamentos Online
    • SEO e Otimizações
    • WordPress
    • Algoritmos & Outras Tecnologias
  • Design e Produto
    • Fotografia
    • Photoshop
    • Design de interfaces e UX
    • Edição/Produção de Vídeos
    • Marketing Online
    • Desenho, Ilustração e 3D
  • Entretenimento e uso pessoal
    • Geral
    • Segurança & Malwares
    • Gadgets e wearable
    • Softwares e Apps
    • Entretenimento

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Google+


Hangouts


Skype


Twitter


deviantART


Github


Flickr


LinkedIn


Pinterest


Facebook


Site Pessoal


Localização


Interesses

Found 4 results

  1. Tenho uma tabela de cadastro de equipamento chamada de taob, e outra tabela com cadastro de eventos de manutenção chamada de tcev. Meu objetivo é listar por categoria de equipamentos (dimensão do indicador) as quantidades de eventos por cada dia num determinado mês, obtendo sua média e desvio-padrão nos dias. Nem todo dia haverá um evento de manutenção em um determinado equipamento, logo preciso que apareça zero neste dia para fins de cálculo do desvio-padrão. Como não gostaria de criar uma tabela "física" no banco para não ficar uma bagunça quando mudar os períodos (várias consultas), fiz uma tabela temporária na memória, desta forma: CREATE TEMPORARY TABLE periodo (dia1 date, primary key (dia1)) ENGINE MEMORY; Depois inseri os dados, para ter a lista dia a dia. INSERT INTO periodo (dia1) VALUES ('2017-11-01'); INSERT INTO periodo (dia1) VALUES ('2017-11-02'); INSERT INTO periodo (dia1) VALUES ('2017-11-03'); INSERT INTO periodo (dia1) VALUES ('2017-11-04'); INSERT INTO periodo (dia1) VALUES ('2017-11-05'); INSERT INTO periodo (dia1) VALUES ('2017-11-06'); INSERT INTO periodo (dia1) VALUES ('2017-11-07'); INSERT INTO periodo (dia1) VALUES ('2017-11-08'); INSERT INTO periodo (dia1) VALUES ('2017-11-09'); INSERT INTO periodo (dia1) VALUES ('2017-11-10'); INSERT INTO periodo (dia1) VALUES ('2017-11-11'); INSERT INTO periodo (dia1) VALUES ('2017-11-12'); INSERT INTO periodo (dia1) VALUES ('2017-11-13'); INSERT INTO periodo (dia1) VALUES ('2017-11-14'); INSERT INTO periodo (dia1) VALUES ('2017-11-15'); INSERT INTO periodo (dia1) VALUES ('2017-11-16'); INSERT INTO periodo (dia1) VALUES ('2017-11-17'); INSERT INTO periodo (dia1) VALUES ('2017-11-18'); INSERT INTO periodo (dia1) VALUES ('2017-11-19'); INSERT INTO periodo (dia1) VALUES ('2017-11-20'); INSERT INTO periodo (dia1) VALUES ('2017-11-21'); INSERT INTO periodo (dia1) VALUES ('2017-11-22'); INSERT INTO periodo (dia1) VALUES ('2017-11-23'); INSERT INTO periodo (dia1) VALUES ('2017-11-24'); INSERT INTO periodo (dia1) VALUES ('2017-11-25'); INSERT INTO periodo (dia1) VALUES ('2017-11-26'); INSERT INTO periodo (dia1) VALUES ('2017-11-27'); INSERT INTO periodo (dia1) VALUES ('2017-11-28'); INSERT INTO periodo (dia1) VALUES ('2017-11-29'); INSERT INTO periodo (dia1) VALUES ('2017-11-30'); Agora que tenho minha tabela temporária, fiz uma combinação dos dados através do from. (...) from (periodo, taob) Quando se usa esta notação no lugar do inner ou left ou right join, haverá uma combinação dos dados entre as tabela periodo e taob, que é o desejado para ter todos os dias por equipamento. Alinhando essas premissas, segue o problema: -> Fiz uma união entre esta combinação com os dados dos eventos, e usei um DISTINCT para não ter repetição dos dados, que não funcionou muito bem. Tive que colocar um group by no final para funcionar. Quando fui obter o desvio-padrão e a média percebi que a fórmula estava considerando todos os dados (inclusive os retirados pelo DISTINCT+GROUP BY), eu preciso que calcule somente os visíveis. Segue código: SELECT DISTINCT Dimensao, dt1, SUM(Qtde), STDDEV_SAMP(Qtde) as desvPad, AVG(Qtde) as media FROM ( ( select taob.CXN3 as Dimensao, Date(tcev.CXDE) as dt1, count(tcev.PIEV) as Qtde from taob left join tcev on (taob.PIOB = tcev.SIOB) where tcev.SIGR=3 and tcev.CXDE between '2017-11-01' and '2017-11-30' group by taob.CXN3, Date(tcev.CXDE) ) UNION DISTINCT ( select taob.CXN3 as Dimensao, periodo.dia1 as dt1, 0 as Qtde from (periodo, taob) where taob.SIGR=3 ) order by Dimensao, dt1, Qtde desc ) as lista GROUP BY Dimensao em anexo o resultado da consulta. Verificando os dados no excel (calculando na "mão") o resultado do desvPad (AMOSTRAL) a dimensão DL deveria ser igual a 2,9752 e se eu considerar os zeros que o DISTINCT "eliminou" a conta (na "mão") bate com o resultado do sql com o valor de 2.8045. Alguém consegue me dar uma pista do que pode estar acontecendo? Ou é uma coisa besta ou é um bom problema. Como sempre! rs! Algumas considerações: taob.CXN3 = Dimensão do equipamento ou indicador. tcev.CXDE = Data do evento de manutenção. tcev.PIEV = Chave primária da tabela de eventos de manutenção. taob.PIOB = Chave primária da tabela de equipamentos ou dimensao do indicador. tcev.SIGR = Grupo de cliente = 3 Att, Alanderson A Dalmaso
  2. Opa pessoal , Preciso de ajuda aqui, tenho o seguinte código: Query7.Close; Query7.SQL.Clear; Query7.SQL.Add('SELECT SUM(E.Quantidade) AS PesoHG, SUM(E.Quantidade* :Chg) as CustoHg FROM Estoque AS E, Cad_Produtos AS C WHERE E.PRODUTO = C.PRODUTO AND e.Lote LIKE '''+edit1.Text+'%'' and E.Quantidade >0 and C.Aplicacao =''MATÉRIA- PRIMA'' and C.DESCRICAO LIKE ''%HG%'''); Query7.ParamByName('Chg').Value := strtoFloat(EdtHG.Text); Query7.Open; Query8.Close; Query8.SQL.Clear; Query8.SQL.Add('SELECT SUM(E.Quantidade) AS pesoPOSTA, SUM(E.Quantidade * :CPost) AS CustoPosta FROM Estoque AS E, Cad_Produtos AS C WHERE E.PRODUTO = C.PRODUTO AND e.Lote LIKE '''+edit1.Text+'%'' and E.Quantidade >0 and C.Aplicacao =''MATÉRIA- PRIMA'' and C.DESCRICAO LIKE ''%posta%'''); Query8.ParamByName('CPost').Value := strtoFloat(EdtPost.Text); Query8.Open; Preciso mostrar a soma de (CustoHg+CustoPosta) no relatório, o que devo fazer?? Desde já agradeço ;-)
  3. Preciso unir dois selects para isso eu to fazendo o seguinte: select X.ID, X.Razao, X.CNPJ from tabela 1 right join tabela X on X.ID = 1.ID union select X.ID, X.Razao, X.CNPJ from tabela 2 right join tabela X on X.ID = 2.ID Até aí blz..me traz o registro certinho: 1 X 11.111.111/1111-11 2 XY 22.222.222/2222-22 3 XYZ 33.333.333/3333-33 Só que eu preciso de mais um dado select X.ID, X.Razao, X.CNPJ, COUNT(X.ID) as QtdeTabela1, '' as QtdeTabela2 from tabela 1 right join tabela X on X.ID = 1.ID group by X.ID, X.Razao, X.CNPJ union select X.ID, X.Razao, X.CNPJ, '' as QtdeTabela1, COUNT(X.ID) as QtdeTabela2 from tabela 2 right join tabela X on X.ID = 2.ID group by X.ID, X.Razao, X.CNPJ Daí, traz assim: 1 X 11.111.111/1111-11 3 0 2 XY 22.222.222/2222-22 2 0 3 XYZ 33.333.333/3333-33 1 0 3 XYZ 33.333.333/3333-33 0 1 Eu preciso que gere assim o resultado: 1 X 11.111.111/1111-11 3 0 2 XY 22.222.222/2222-22 2 0 3 XYZ 33.333.333/3333-33 1 1 Alguém pode me ajudar, por gentileza?
  4. Olá pessoal. Tenho o seguinte código onde tenho duas queries, na primeira capturo o COUNT do campo nome_usuario, na segunda seleciono os campos que desejo. Gostaria de melhorar a performance, fazendo uma só query. Alguém pode me ajudar? <?php defined('BASEPATH') OR exit('No direct script access allowed'); class TodosAgendamentosFuturos_model extends CI_Model{ public function main($funcionario, $dataAtual, $limit, $start) { //Array para guardar dados a serem retornados $resultados = array(); //QUERY TO BIND TOTALCOUNT $sql = "SELECT DISTINCT COUNT(u.nome_usuario) AS total FROM horariosfuncionario hfs INNER JOIN usuario u INNER JOIN statushorariofuncionario shf INNER JOIN funcionario f INNER JOIN agendamento a INNER JOIN formapagamentosalao fps ON a.codigo_formapagamentosalao = fps.codigo_formapagamentosalao AND a.codigo_usuario = u.codigo_usuario AND a.codigo_horariosfuncionario = hfs.codigo_horariosfuncionario AND shf.codigo_statushorariofuncionario = hfs.codigo_statushorariofuncionario AND f.codigo_funcionario = hfs.codigo_funcionario WHERE STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y') > STR_TO_DATE(?, '%d/%m/%Y') AND f.codigo_funcionario = ? ORDER BY STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y'), STR_TO_DATE(hfs.horario_horariosfuncionario,'%H:%i')"; $total = $this->db->query($sql, array($dataAtual, $funcionario)); //Selecionando todos agendamentos futuros $sql = "SELECT DISTINCT u.nome_usuario, u.telefone1_usuario, u.telefone2_usuario, a.codigo_agendamento, hfs.horario_horariosfuncionario, hfs.data_horariosfuncionario, a.comentario_agendamento, fps.nome_formapagamentosalao FROM horariosfuncionario hfs INNER JOIN usuario u INNER JOIN statushorariofuncionario shf INNER JOIN funcionario f INNER JOIN agendamento a INNER JOIN formapagamentosalao fps ON a.codigo_formapagamentosalao = fps.codigo_formapagamentosalao AND a.codigo_usuario = u.codigo_usuario AND a.codigo_horariosfuncionario = hfs.codigo_horariosfuncionario AND shf.codigo_statushorariofuncionario = hfs.codigo_statushorariofuncionario AND f.codigo_funcionario = hfs.codigo_funcionario WHERE STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y') > STR_TO_DATE(?, '%d/%m/%Y') AND f.codigo_funcionario = ? ORDER BY STR_TO_DATE(hfs.data_horariosfuncionario, '%d/%m/%Y'), STR_TO_DATE(hfs.horario_horariosfuncionario,'%H:%i') LIMIT ".$limit." OFFSET ".$start; $resultado = $this->db->query($sql, array($dataAtual, $funcionario)); //Percorrendo resultados retornados foreach ($resultado->result() as $row) { //Captura dia da semana da data enviada como parâmetro usando o helper dia_semana $dia = diasemana($dataAtual); //Adiciona resultados no array resultados array_push($resultados, array('nome_usuario' => $row->nome_usuario, 'telefone1_usuario' => $row->telefone1_usuario, 'telefone2_usuario' => $row->telefone2_usuario, 'codigo_agendamento' => $row->codigo_agendamento, 'horario' => $row->horario_horariosfuncionario, 'data' => $row->data_horariosfuncionario, 'nomeDiaSemana' => $dia, 'comentario' => $row->comentario_agendamento, 'formaPagamento' => $row->nome_formapagamentosalao)); } $rows = $resultados; $data = array( "success"=>true, "totalCount"=>$total->row()->total, "menu"=>$rows ); echo json_encode($data); } }
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.