Luiz Henrique
Members-
Total de itens
2259 -
Registro em
-
Última visita
Tudo que Luiz Henrique postou
-
Aliás, o que traz melhor desempenho? SUM(st.valor_servico*st.quantidade) Isso dentro da mesma sql como está ou uma function que será acionada a cada linha de resultado?
-
mantive uma function (sql secundário) para calcular o valor pago, subselect iria complicar demais. Como estou refazendo, estou procurando formas de enxugar o código e deixa-lo com melhor desempenho possível, e queria evitar essas consultas a parte, porque está cheio disso, exemplo: SUM(st.valor_servico*st.quantidade) isso acima já era uma function da forma que você sugeriu, mas consegui coloca-la na mesma sql, só não estou entendendo porque não estou conseguindo fazer a mesma coisa com o valor_pago. Mas obrigado
-
Sim preciso, É uma listagem diária de serviços que exibe o valor do mesmo e o quanto foi pago, ( para agilizar o atendimento e evitar ter que abrir a ordem de serviço para ver). Coloquei o Join porque não sei de outra forma de fazer a consulta de outra tabela sem ter que fazer um sql secundário para isso, quero que fique o mais rápido e prático possível .
-
SUM(st.valor_servico*st_quantidade) Eu devia ter testado isso antes de postar, achava que o sum só somaria, que não seria possível fazer cálculos secundários dentro da função! Obrigado.
-
Olá pessoas, Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados: Tabela ticket id, id_cliente Tabela clientes id, nome Tabela servicos_ticket id, id_ticket, valor_ticket Aqui OK SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados. ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT ticket.* mas não adianta. o resultado deveria ser algo assim: 12344 luiz 10.00 12345 henrique 20.00 mas se o ticket do luiz tiver 3 serviços cadastrados 12344 luiz 10.00 12344 luiz 10.00 12344 luiz 10.00 12345 henrique 20.00 e deveria ser apenas 1, aí eu faria a soma dos valores 12344 luiz 30.00 Como elimino essa duplicação? Deu para entender? Obrigado.
-
Seria isso? CREATE TABLE IF NOT EXISTS `clientes` ( `id_cliente` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(255) NOT NULL, PRIMARY KEY (`id_cliente`) ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `servico_ticket` ( `id_servico_ticket` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `id_ticket` int(11) UNSIGNED NOT NULL, `servico` varchar(255) NOT NULL, `valor_servico` decimal(10,2) NOT NULL, `quantidade` tinyint(11) UNSIGNED NOT NULL DEFAULT '1', PRIMARY KEY (`id_servico_ticket`) ) ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=latin1; CREATE TABLE IF NOT EXISTS `ticket` ( `id_ticket` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `ticket` int(11) NOT NULL, `id_cliente` int(11) NOT NULL, PRIMARY KEY (`id_ticket`) ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; Então consegui a soma do campo valor_servico, adicionando isso no select: SELECT *, SUM(st.valor_servico) AS soma_servico Ele faz a soma certo o problema é que é uma soma bruta, ignora a quantidade a ser multiplicada
-
Olá, Não funcionou. Consegui resolver com o GROUP BY SELECT * FROM ticket t JOIN clientes c ON t.id_cliente = c.id_cliente JOIN servico_ticket st ON t.id_ticket = st.id_ticket GROUP BY t.id_ticket Porém, preciso tratar os dados e não sei como, ex: A tabela servico_ticket contém os serviços cadastrados de cada ticket, podem ser vários, e lá consta o tipo do serviço, valor unitário e quantidade, e preciso pegar isso multiplicar e somar com os demais serviços para obter o valor finale ser apresentado na listagem de tickets, ex servico_ticket: id: 1 ticket: 9999 valor_servico: 10.00 quantidade_servico: 2 id:2 ticket: 9999 valor_servico: 30.00 quantidade_servico: 1 Neste caso preciso multiplicar o 10*2 do id1 e somar com os 30 do id2, para apresentar na listagem, mas usando o group by só consigo o primeiro registro.
-
Olá pessoas, Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados: Tabela ticket id, id_cliente Tabela clientes id, nome Tabela servicos_ticket id, id_ticket, valor_ticket Aqui OK SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados. ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT tickets.* mas não adianta. o resultado deveria ser algo assim: 12344 luiz 10.00 12345 henrique 20.00 mas se o ticket do luiz tiver 3 serviços cadastrados 12344 luiz 10.00 12344 luiz 10.00 12344 luiz 10.00 12345 henrique 20.00 e deveria ser apenas 1, aí eu faria a soma dos valores 12344 luiz 30.00 Como elimino essa duplicação? Deu para entender? Obrigado.
-
Olá pessoas, Instalei o WampServer e veio com MariaDB 10.4 e MySQL 5.7, não encontrei opção de não instalar/desativar o MariaDB então ficou os 2, aparentemente ambos estão rodando porém a conexão com o mysql não vai, o code que uso é esse: (sempre cai na falha de conexão) $conexao = mysqli_connect("localhost", "root", "", "banco"); if (mysqli_connect_error()) { echo "Falha na conexão com o servidor MySQL: " . mysqli_connect_error(); } else { echo 'Conexão Ok!'; } Tenho que fazer isso de forma diferente? Tentei criar o banco no MariaDB para testar mas não dá permissão de forma alguma, o que é estranho já que acabei de instalar. Aguardo. Obrigado
-
Resolvido, usei a 3308 que é a do mysql a 3306 é mariadb. Obrigado.