-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
No windows clique em iniciar/executar escreva cmd. Você estará no prompt do DOS. Digite mysql -u <seu usuário> -p Você receberá a mensagem Welcome to the MySQL monitor. Commands end with; or \g. Your MySQL connection id is 1 Server version: 5.0.37-community-nt MySQL Community Edition (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>Você já está no prompt do mysql. Para sair digite quit seguido da tecla enter. Depois, digite exit para sair do prompt do DOS. Nota; todos os comandos dentro do mysql devem ser finalizados com o ponto-e-virgula ";"
-
(Resolvido) Limitar resultados de uma das tabelas
pergunta respondeu ao jose.rob.jr de Denis Courcy em MySQL
Oi, 'jose.rob.jr' Se você usar uma numeração ordenada para cada slug de uma página você consegur o que quer de modo mais eficiente. Exemplo imagine que a página com id 1 possua 3 slugs assim identificados: id_página | id_slug 1 | 1 1 | 2 1 | 3 Se sua chave primária for (id_página, id_slug), basta setar o filtro da cláusula where para id_pagina = 1 and id_slug = 1. Esta forma é muito mais eficiente do que a que você utilizou em Pois quando você usa o LIMIT, o MySQL retornará todas as linhas na consulta e, depois, separará a(s) linha(s) indicada(s) no LIMIT -
Instalar mysql via linha de comando. É possível ?
pergunta respondeu ao easwsistemas de Denis Courcy em MySQL
Não faz. -
Oi, 'jose.rob.jr'! Não. Não vai. o LEFT JOIN retorna todas as linhas que existirem na tabela da esquerda (no seu caso a tabela "a") e todas as linhas da tabela da direita (tabela "b") que estiverem associadas a tabela "a". Se não houver correspondente na tabela da direita (a tabela "b") ele vai trazer nulo para poder completar o resultado.Assim, igmagine as tabelas "a" e "b" como sendo as tabelas donos de carro e carros, respectivamente: tabela a id | nome 01 | joao 02 | maria 03 | jose tabela b id | id_a | carro 01 | 01 | gol 02 | 03 | palio Se eu fizer o select com left join, terei:SELECT nome, carro FROM a LEFT JOIN b ON b.id_a = a.id Teremos como resultado nome | carro joao | gol maria | jose | palio A forma como você representou o seu segundo sql em É a forma de representação equivalente ao INNER JOIN que é diferente do LEFT JOIN. No INNER JOIN só serão retornadas as linhas que existirem em ambas as tabelas. Usando o exemplo acima modificado para INNER JOIN, teremos:SELECT nome, carro FROM a INNER JOIN b ON b.id_a = a.id como resultado nome | carro joao | gol jose | palio Como resposta a sua segunda pergunta em temos a clareza de código e facilitar o motor do MySQL na resolução da instrução SQL como os principais benefícios do uso do JOIN.
-
Oi, 'Rafael Santiago' ! Já tentou fazer assim: Tabela 1 create table tabela_1( id integer unsigned not null auto_increment, descricao varchar(10), primary key (id)); Tabela 2create table tabela_2( id integer unsigned not null auto_increment, descricao varchar(10), primary key (id)); Trigger da tabela 1DELIMITER $$; DROP TRIGGER `felipe`.`Tabela_1_Insert_after`$$ create trigger `Tabela_1_Insert_after` AFTER INSERT on `tabela_1` for each row BEGIN DECLARE vEOF INT DEFAULT 0; DECLARE result int default 1; DECLARE vID int; DECLARE curTAB_2 CURSOR FOR SELECT ID FROM TABELA_2 WHERE ID = NEW.ID; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vEOF = 1; OPEN curTAB_2; FETCH curTAB_2 INTO vID; IF vID IS NULL then SET result = 0; END IF; CLOSE curTAB_2; IF result = 0 then INSERT INTO TABELA_2 (ID, DESCRICAO) VALUES (NEW.ID, NEW.DESCRICAO); END IF; END; $$ DELIMITER;$$ Trigger da tabela 2DELIMITER $$; DROP TRIGGER `felipe`.`Tabela_2_Insert_after`$$ CREATE TRIGGER `felipe`.`Tabela_2_Insert_after` AFTER INSERT on `felipe`.`tabela_2` FOR EACH ROW BEGIN DECLARE vEOF INT DEFAULT 0; DECLARE result int default 1; DECLARE vID int; DECLARE curTAB_1 CURSOR FOR SELECT ID FROM TABELA_1 WHERE ID = NEW.ID; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vEOF = 1; OPEN curTAB_1; FETCH curTAB_1 INTO vID; IF vID IS NULL then SET result = 0; END IF; CLOSE curTAB_1; IF result = 0 then INSERT INTO TABELA_1 (ID, DESCRICAO) VALUES (NEW.ID, NEW.DESCRICAO); END IF; END$$ DELIMITER;$$ Teste 1: Tabela 1 acionando trigger e alimentando tabela 2insert into tabela_1 (id, descricao) values (1, 'teste'); Teste 2: Tabela 2 acionando trigger e alimentando tabela 1insert into tabela_2 (id, descricao) values (2, 'teste'); O update Criando o trigger para tabela 1DELIMITER $$; DROP TRIGGER `felipe`.`Tabela_1_Update_after`$$ CREATE TRIGGER `felipe`.`Tabela_1_Update_after` AFTER UPDATE on `felipe`.`tabela_1` FOR EACH ROW BEGIN DECLARE vEOF INT DEFAULT 0; DECLARE result int default 1; DECLARE vID int; DECLARE vDESCRICAO char(10); DECLARE curTAB_2 CURSOR FOR SELECT ID, DESCRICAO FROM TABELA_2 WHERE ID = NEW.ID; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vEOF = 1; OPEN curTAB_2; FETCH curTAB_2 INTO vID, vDESCRICAO; IF NOT vID IS NULL THEN IF vDESCRICAO <> NEW.DESCRICAO THEN SET result = 0; END IF; END IF; CLOSE curTAB_2; IF result = 0 then UPDATE TABELA_2 SET DESCRICAO = NEW.DESCRICAO WHERE ID = NEW.ID; END IF; END; $$ DELIMITER;$$ Testanto update tabela_1 set descricao = 'TESTE 1' where id = 1; Para tabela 2 o trigger é:DELIMITER $$; DROP TRIGGER `felipe`.`Tabela_2_Update_after`$$ CREATE TRIGGER `felipe`.`Tabela_2_Update_after` AFTER UPDATE on `felipe`.`tabela_2` FOR EACH ROW BEGIN DECLARE vEOF INT DEFAULT 0; DECLARE result int default 1; DECLARE vID int; DECLARE vDESCRICAO char(10); DECLARE curTAB_1 CURSOR FOR SELECT ID, DESCRICAO FROM TABELA_1 WHERE ID = NEW.ID; DECLARE CONTINUE HANDLER FOR NOT FOUND SET vEOF = 1; OPEN curTAB_1; FETCH curTAB_1 INTO vID, vDESCRICAO; IF NOT vID IS NULL THEN IF vDESCRICAO <> NEW.DESCRICAO THEN SET result = 0; END IF; END IF; CLOSE curTAB_1; IF result = 0 then UPDATE TABELA_1 SET DESCRICAO = NEW.DESCRICAO WHERE ID = NEW.ID; END IF; END; $$ DELIMITER;$$ No exemplo acima usei um banco de teste chamado felipe. É importante, no update, testar cada um dos campos para saber se um deles foi alterado.
-
Imprimir Núemros Invertirdos em um vetor
pergunta respondeu ao Edua®do de Denis Courcy em Lógica de Programação
Oi, 'Edua®do' ! Vou comentar seu código e informar como corrigir. Basicamente o que está sendo pedido é: Entrada e armazenamento de dados; Ordenação dos dados Apresentação dos dados. em seu código a parte de entrada e armazenamento dadados está correta. var a: vetor[1..3] de inteiro b: vetor[1..3] de inteiro x,f: inteiro inicio // Seção de Comandos para x de 1 ate 3 faca escreva("Digite o", x,"º número: ") leia(a[x]) fimpara Então, para apresentá-los de forma inversa a que foram digitados é só inverter o contador x.para x de 3 ate 1 faca escreva(a[x]) fimpara fimalgoritmo oupara x de 1 ate 3 faca escreva(a[4 - x]) fimpara fimalgoritmo -
Qual melhor Aplicativo para Maniulação do Informix?
pergunta respondeu ao davi.feo de Denis Courcy em Demais Bancos
Oi, 'davi.feo' ! Movendo MySQL -->> Demais Bancos -
Oi, 'nergal'! Não usa a parte identified by 'suasenha'. Fica assim:GRANT ALL PRIVILEGES IN seubancodedados.* TO 'onomedousuario'@'%'; deixa o %
-
(Resolvido) Importar um arquivo txt para o meu bd
pergunta respondeu ao claudio elias de Denis Courcy em MySQL
OK. Então, você deverá usar uma "muleta" para conseguir o que quer. O primeiro passo será criar uma tabela temporária com um registro do tipo char (não varchar) com o tamanho da linha do arquivo que você quer importar. O segundo passo é usar o comando LOAD DATA LOCAL INFILE "arquivo.txt" INTO TABLE <tabela-temporaria> LINES TERMINATED BY '\r\n' se o arquivo foi gerado no DOS/Windows ou o comando LOAD DATA LOCAL INFILE "arquivo.txt" INTO TABLE sua_tabela" LINES TERMINATED BY '\n' se o arquivo txt foi gerado no linux/unix. O terceiro passo será usar o comando INSERT INTO suatabela (<seus-campos>) SELECT substring(<campo>, x, y), ..., substring(<campo_n>, x_n, y_n) FROM <tabela-temporaria>; O quarto passo será destruir a tabela temporária. É importante que você faça testes em um banco de teste para não se arrepender se algo der errado. -
(Resolvido) Importar um arquivo txt para o meu bd
pergunta respondeu ao claudio elias de Denis Courcy em MySQL
Oi, 'claudio elias' Não fui feliz em minha pergunta de como estão separados os campos em seu arquivo.txt Eu qgostaria que você informasse se usa caracters especiais para separação dos campos ou se esles estão separados somente com caracteres de espaço. Ou seja, se é um arquivo delimitado (por um caracter em particular) ou se é do tipo largura fixa em que a separação dos campos é pelo caracter de espaço. Quanto ao phpmyadmin eu não uso. Não trabalho com php. Mas creio que seja com um comando simples de sql. Use a linha de comando do mysql. Para este fim, ela é melhor . -
(Resolvido) Importar um arquivo txt para o meu bd
pergunta respondeu ao claudio elias de Denis Courcy em MySQL
Tanto faz. Não sou fã do phpmyadmin. Normalmente uso as ferramentas do mysql. Como os campos do seu arquivo txt estão separados? -
Oi, 'neto.joaobatista'! Seu modelo (apesar de mais enxuto) o programador deve saber com que código foi cadasrado um nick. Por outro lado, procurei mostrar como buscar um nick sem importar por qual código ele foi cadastrado. De qualquer forma, parabéns pela iniciativa.
-
Para trazer ambos os grupos Tenta assim: SELECT STRAIGHT_JOIN u.name FROM tb_user u INNER JOIN tb_connection t ON t.ID_user = u.ID INNER JOIN tb_adj a ON a.ID = t.ID_adj WHERE a.name ='sexy' AND u.ID IN ( SELECT STRAIGHT_JOIN t2.ID_user FROM tb_connection t2 INNER JOIN tb_adj a2 ON a2.ID = t2.ID_adj WHERE a2.name = 'rich');
-
Oi, 'Fabiano R' É quase isto. Tente assim:SELECT STRAIGHT_JOIN u.name FROM tb_user u INNER JOIN tb_connection t ON t.ID_user = u.ID INNER JOIN tb_adj a ON a.ID = t.ID_adj WHERE a.name IN ('sexy', 'rich');
-
(Resolvido) Calcular uma comissão de peça envolvendo porcentagem.
pergunta respondeu ao Dσи.Wσям de Denis Courcy em Lógica de Programação
Oi, 'Dσи.Wσя' Parabéns por sua iniciativa. como sinalização para atribuição em algorítimos como este você pode usar o símbolo "<-" ou o sinal de "=" (sem as aspas). Algumas linguagens de programação exigem a declaração de variáveis antes que eslas sejam utilizadas. Pode usar o DECLARE para isto, se você quizer, mas seu algorítimo está legível e fácil de entender. Então, melhorando um pouco e aplicando o que mencionei acima, teremos: declare idvendedor, codpeca, prpeca, qvenda, resultum, resultdois, total Leia codpeca Leia prpeca Leia qvenda resultum <- prpeca * qvenda resultum <- resultum / 100 resultdois <- resultum * 5 total <- resultdois Escreva total Melhorando o código teremos:declare idvendedor, codpeca, prpeca, qvenda, total Leia codpeca Leia prpeca Leia qvenda total <- prpeca * qvenda * 5 /100 Escreva total -
'wellington silva' Pensei em uma solução que poderá te ajudar Veja SELECT IF((recdes1.vencimento between '2009-04-01' as '2009-04-30' ) and (recdes1.valor > 0) , "Vencida", "não Vencida") AS POSICAO, <relacione-os-demais-campos> FROM financeiro ORDER BY POSICAO DESC
-
Oi, 'wellington silva' Quanto a select * from recdesp as recdes1 where (recdes1.vencimento between '2009-04-01' as '2009-04-30' ) and (recdes1.valor > 0) group by codparc Pelo que você passou no primeiro post deste tópico "recdesp" é atributo da tabela financeiro. No tópico acima você informa que é o nome de uma tabela. Qual é o correto? Outra coisa, a cláusula "AS" só é usada para renomear atributos(campos). (Ver manual do MySQL Sintaxe do SELECT) Mais uma, GROUP BY é cláusula de agrupamento. A cláusula correta em seu exemplo é ORDER BY.
-
(Resolvido) Ordenar com base em várias tabelas
pergunta respondeu ao Felipe Andrzejewski de Denis Courcy em MySQL
oI, 'Felipe Andrzejewski' Se entendi direito é isso aqui: SELECT l.lk_url, p.pub_valor, COUNT(p.pub_id), COUNT(u.Usuario_usu_id) FROM link l LEFT JOIN publicidade p ON p.Link_lk_id = l.lk_id INNER JOIN usuario_link u ON u.Link_lk_id = l.lk_id GROUP BY l.lk_url ORDER BY p.pub_valor DESC; -
Oi, 'wellington silva' Por qual(is) campo(s) estas tabelas se relacionam? Razão: o que você passou não foi suficiente para determinar um relacionamento entre as tabelas.
-
Oi, Adriano! O comando é este mesmo. "Replace". Deve ser usado assim: Para Consultar a base de dados: SELECT REPLACE(<nome-docampo>, <string-antiga>, <string-nova>) FROM <nome-da-tabela>; Para atualizar a base de dadosUPDATE <nome-da-tabela> SET <nome-do-campo> = REPLACE(<nome-docampo>, <string-antiga>, <string-nova>);
-
Oi, 'Shunt' Havia outra versão do MSQL instalada antes? Que tentativa de instalar é esta? Primeira, segunda, ... nésima tentativa?
-
Oi, 'serginho_pv' Faça assim: SELECT p.nome, t.DDD, t.numero, t.ramal FROM PESSOA p LEFT JOIN TELEFONE T ON t.cpf_CNPJ = p.cpf LEFT JOIN DONO d ON d.cpf = p.cpf LEFT JOIN ANIMAL a ON a.cod_cliente = d.cod_cliente WHERE a.raca = 'BULDOG';
-
(Resolvido) Exercício Codigo Binario
pergunta respondeu ao MrT@ de Denis Courcy em Lógica de Programação
Na base decimal temos 10 algarismos que variam de 0 a 9 e a construção de qualquer número nesta base já é nossa conhecida. Na base binária temos apenas 2 algarismos o 0 e o 1. Então a representação de 1 a 5 em binário ficaria assim: 000 = 0 em decimal 001 = 1 010 = 2 011 = 3 100 = 4 101 = 5. Na base 3 (a que está no quote) são 3 algarismos que são: 0, 1 e 2 A construção dos números é similar. Entendeu? -
Problema para migrar stored procedure....Meio urgente
pergunta respondeu ao VArito de Denis Courcy em MySQL
Oi, 'VArito'! Altere esta instrução SELECT @vCargaHoraria := CargaHoraria*60 FROM Colaborador WHERE ColaboradorID = vColaboradorID; paraSET @vCargaHoraria = (SELECT CargaHoraria*60 FROM Colaborador WHERE ColaboradorID = vColaboradorID); -
'Pompeu' Já que deu certo, veja a otimização: DELIMITER $$ DROP PROCEDURE IF EXISTS `clubedec_ccsa`.`sp_cria_relatorio`$$ CREATE PROCEDURE `clubedec_ccsa`.`sp_cria_relatorio` () BEGIN DECLARE r_id INTEGER; DECLARE r_tiposocio INTEGER; DECLARE r_ntitulo CHAR(3); DECLARE r_codigo INTEGER; DECLARE r_nome CHAR(50); DECLARE socio_eof INTEGER DEFAULT 0; DECLARE cur_socio CURSOR FOR SELECT id, tiposocio, ntitulo, codigo, nome FROM socios ORDER BY nome; DECLARE CONTINUE HANDLER FOR NOT FOUND SET socio_eof = 1; DELETE FROM cria_relatorio; OPEN cur_socio; FETCH cur_socio INTO r_id, r_tiposocio, r_ntitulo, r_codigo, r_nome; WHILE NOT socio_eof DO INSERT INTO cria_relatorio (id, tiposocio, ntitulo, codigo, nome) VALUES (r_id, r_tiposocio, r_ntitulo, r_codigo, r_nome); INSERT INTO cria_relatorio (idsocio, ntitulo_d, codigo_d, nome_d, dtnasc, grau_parentesco, `status`) SELECT idsocio, ntitulo, codigo, nome, dtnasc, grau_parentesco, `status` FROM dependentes WHERE idsocio = r_id ORDER BY codigo; FETCH cur_socio INTO r_id, r_tiposocio, r_ntitulo, r_codigo, r_nome; END WHILE; CLOSE cur_socio; END$$ Pode dar DROP PROCEDURE IF EXISTS `clubedec_ccsa`.`sp_cria_relatorio_dep`;nesta procedure. Não vai mais precisar dela.