Ir para conteúdo
Fórum Script Brasil

Denis Courcy

Moderadores
  • Total de itens

    3.089
  • Registro em

  • Última visita

Tudo que Denis Courcy postou

  1. Qual o campo que informa a colocação do jogador?
  2. Denis Courcy

    Error 1064 (Joomla)

    O segundo erro informa um erro na sintaxe. Poste a SQL aqui para analisarmos onde está o erro.
  3. Ainda não entendi o que você quer. O campo data em sua tabela é a data do inventário? Se é a data do inventario, qual o(s) campo(s) que você quer comparar (status, usuario, centrodecusto,filial)? A alteração, além de ser por data também é por usuário (como você menciona em seu primeiro post deste tópico)?
  4. Tente assim: SELECT r1.ano_mes, r1.total_receitas, d1.total_despesas, (r1.total_receitas - d1.total_despesas) AS saldo FROM ( SELECT SUBSTRING(r.data, 1, 7) AS ano_mes, SUM(r.receitas) AS total_receitas FROM receitas r GROUP BY SUBSTRING(r.data, 1, 7) )r1 LEFT JOIN ( SELECT SUBSTRING(d.data, 1, 7) AS ano_mes, SUM(r.despesas) AS total_despesas FROM despesas d GROUP BY SUBSTRING(d.data, 1, 7) )d1 ON d1.ano_mes = r1.ano_mes Tenha cuidado para não executar esta select com um período grande ou com um número elevado de registros, pois, por não conter índices em ano_mes, sempre executará por TABLE SCAN.
  5. Pelo que entendi, você quer os registros que não estejam nesta data (NOT IN) SELECT usuario FROM `inventario` where data='11/01/2018' Tente assim: SELECT i1.* FROM `inventario` i1 LEFT JOIN ( SELECT i.usuario FROM `inventario` i WHERE i.data='11/01/2018' ) i2 ON i2.usuario = i1.usuario WHERE i2.usuario IS NULL
  6. Denis Courcy

    Subconsulta

    -- flutuação de ordens de venda diária e horária dos últimos 3 meses no Canadá SELECT p.pais_nome, SUBSTRING(d.`data`,1,7) AS Ano_Mes, COUNT(o.ordem_id) AS qt_ordens FROM ordens o INNER JOIN pais p ON p.pais_id = o.pais_id INNER JOIN datahora d ON d.datahora_id = o.datahora_id WHERE d.data BETWEEN DATE_SUB(DATE(NOW()), INTERVAL 3 MONTH) AND DATE(NOW()) GROUP BY p.pais_nome, Ano_Mes ; Siga daí para a montagem das outras duas consultas
  7. Denis Courcy

    MYSQL COUNT e IF?

    Use SUM( IF(dataretorno IS NOT NULL, 1, 0)) em vez de SUM( CASE WHEN dataretorno IS NOT NULL THEN 1 ELSE 0 END)
  8. Tente assim: SELECT m1.material, m1.quantidade FROM ( SELECT material, SUM(quantidade) as quantidade FROM material GROUP BY material ) m1 WHERE m1.material LIKE '%$busca%' AND m1.quantidade LIKE '%$busca1%' ORDER BY m1.material ASC
  9. Denis Courcy

    Zero a esquerda

    Então use a função LPAD. SELECT LPAD(20,3,'0') --> 020 SELECT LPAD(2,3,'0') --> 002
  10. Denis Courcy

    Zero a esquerda

    altere sua tabela para que aceite ZEROFIL
  11. Movendo para forum de PHP
  12. Criar o campo de ID do login do cliente nas tabelas é uma forma inteligente. Não entendi o que você quiz dizer sobre "forma mais elegante"
  13. Modifique esta linha SELECT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade para SELECT SQL_CALC_FOUND_ROWS DISTINCT * FROM nomeRef WHERE estado = '$Linha[estado]' AND nivel = '3' ORDER BY nome ASC LIMIT $inicio, $quantidade Usando SELECT FOUND_ROWS() AS total para retornar o total de linhas. Com este total de linhas você pode calcular a quantidade de páginas e desenvolver sua lógica de paginação
  14. sum(if(estado='candelado',quantidade,0)) as QuantidadeCancelada O mesmo vale para a outra coluna
  15. Você fechou p parenteses que você abriu antes de ddd ???
  16. -- Inicio da procedure ... -- Area de declaracoes de variaveis de sua procedure DECLARE msg VARCHAR(2000) VALUE "Sem Mensagem"; -- suas mensagens de saida serao atribuidas a esta variavel DECLARE varIdUsuario int; -- variavel de apoio para determinar existencia de usuario SELECT idUsuario INTO varIdUsuario FROM usuario WHERE idUsuario = pidUsuario; -- pidUsuario = parametro passado externamente a procedure IF varIdUsuario IS NULL THEN SET msg = "Usuario não encontrado"; END IF; ... SELECT msg AS msg; -- exibira sua mensagem ao final da procedure -- Fim da procedure; Este é parte do caminho.
  17. Denis Courcy

    SQL JOINS

    Vi a figura, em anexo, em meu Face. Creio que auxiliará os iniciantes na área.
  18. A primeira coisa a fazer é criar a tabela HistoricoEncomendas. Os campos são com o mesmo nome e tipo dos apresentados na view. Você já deve ter estudado sobre o comando CREATE TABLE. A segunda coisa é criar um insert na tabela HistoricoEncomendas com os dados selecionados da view. Seris algo como INSERT INTO .... (você já deve ter estudado sobre isso) SELECT (relação de campos) FROM ViewTotalEncomenda; Basicamente isso. Se eu fizesse mais estaria fazendo sua terefa escolar e como professor não posso/devo/quero fazer isso.
  19. São dois conjuntos(tabelas/entidades) a serem criados. Cada conjunto possui atributos(campos) que manterão as propriedades(características) de cada elemento do conjunto(registro); Professor - é o conjunto que manterá(guardará) os professores de uma escola, por exemplo. Ele possui os atributos Matricula, data de nascimento, nome, salário e mais um outro que veremos mais adiante. O outro conjunto chama Disciplina, que possui os atributos código e nome. Ministra - é o relacionamento entre professor e disciplina. Este é um relacionamento UM para MUITOS. Ele informa no diagrama, que para UMA disciplina pode haver MAIS DE UM professor. Ministra não é uma entidade física. Não é um conjunto. Não é uma tabela. Este relacionamento é representado pela inclusão do campo Codigo de Disciplina na tabela Professor. Continua. Mas aguardo suas dúvidas para prosseguirmos.
  20. Denis Courcy

    Cursores

    Bua tarde. Você criou um campo AUTO_INCREMENT e o referenciou como NULL no insert. Campos auto incrementados não necessitam de "auxilio" eles fazem o trabalho sozinhos. Além disso, por default, são NOT NULL e precisam ser chaves primárias. O segundo erro está na declaração do insert sem a declaração de campos que serão inseridos. O terceiro está na quantidade de campos passada na cláusula VALUES. Está menor que a declaração de campos do insert. A inclusão deveria ser assim: INSERT INTO VENDEDORES(NOME, JAN, FEV, MAR, TOTAL, MEDIA) VALUES('MAFRA', 32, 242, 574, ???); Onde em ??? deveria haver valor
  21. Desculpe, eu errei. Faça assim: SELECT a.nick, ui.level FROM user_info ui INNER JOIN account a ON a.uid = ui.uid WHERE ui.level > 0 ORDER BY ui.level DESC
  22. Faça assim: SELECT UID, level FROM user_info ui INNER JOIN account a ON a.uid = ui.uid WHERE level>0 ORDER BY level DESC
  23. Dá certo sim. Respondendo suas questões. 1)você usou having sem usar um operador relacional depois do campo Resp. A função MAX retorna o valor máximo de uma coluna em um agrupamento. Foi colocada na cláusula HAVING porque esta cláusula só é executada APÓS a cláusula GROUP BY. Como MAX é uma função de agrupamento o HAVING entende que deve selecionar somente a(s) coluna(s) com o valor máximo. 2) e você igualou as chaves primeiras de tabela a1 e funcionario, sendo que eu só tenho a tabela funcionario amigo Sei que você só tem uma tabela funcionário, mas deve ser de seu conhecimento que a saida de uma query é uma tabela. Neste caso eu a nomeei como `a1` e relacionei esta tabela com a tabela `f` que é a tabela de funcionário. Como a tabela `a1` é o resultado de uma query em funcionário a chave primária das duas tabelas está no mesmo campo. Para facilitar seu entendimento a rotina abaixo realiza a mesma operação SELECT idFunc,nomefunc,cargo,MAX(salario) FROM funcionario GROUP BY cargo Mas se você quiser um resultado igual ao que pretendia anteriormente, poderá usar assim: SELECT f.nomefunc, f.cargo, f.salario FROM funcionario f INNER JOIN ( SELECT idFunc, cargo, MAX(salario) FROM funcionario GROUP BY cargo ) a1 ON a1.idFunc = f.idFunc ORDER BY f.cargo ASC;
  24. Tenta assim: SELECT f.nomefunc, f.cargo, f.salario FROM funcionario f INNER JOIN ( SELECT idFunc FROM funcionario GROUP BY cargo HAVING MAX(salario) ) a1 ON a1.idFunc = f.idFunc ORDER BY f.cargo ASC; ;
×
×
  • Criar Novo...