-
Total de itens
3.089 -
Registro em
-
Última visita
Tudo que Denis Courcy postou
-
O que esta select está fazendo? Informa o objetivo dela. Ela não está ligando uma tabela a outra. Esta consulta ficará extremamente lenta quando houver uma quantidade maior de registros.
-
Oi Thiago,Respondendo suas perguntas: Sim. O MySQL pode ser usado por qualquer tipo e tamenho de empresa. Isto vai depender de você. Vai depender do tamanho da segurança que você quer dar a seu negócio. Mas se você está falando específicamente dos dados contidos nos bancos MySQL, estes são abertos e não criptografados. Eu tenho clientes (hospitais) que trabalham com MySQL e os dados dos pacientes (os prontuários Médicos) são criptografados e ninguém tem acesso a eles. Mas eu tive que desenvolver um código para isto. Não é o banco que deve ficar acessível. É sua aplicação que deve enxergar o banco de dados.
-
(Resolvido) Voltar o Contador do AutoIncrement
pergunta respondeu ao tércio fernandes de Denis Courcy em MySQL
Execute o teste abaixo e adapte a sua solução: CREATE TABLE teste( id INT UNSIGNED NOT NULL AUTO_INCREMENT, ds VARCHAR(6), PRIMARY KEY(id) )ENGINE=MYISAM; INSERT INTO teste(id,ds) VALUES (1,a),(2,a),(3,a),(4,a),(5,a),(6,a),(7,a),(8,a),(9,a),(100,a); UPDATE teste SET id=10 WHERE id=100; ALTER TABLE teste AUTO_INCREMENT=10; INSERT INTO teste(ds) VALUES(b); O ID ficará com 11. -
Sim. tem como fazer. Primeiro faça sua consulta usando a clausula SQL_CALC_FOUND_ROWS. Exemplo SELECT SQL_CALC_FOUND_ROWS * FROM minhatabela LIMIT 0,100 Com a cláusula SQL_CALC_FOUND_ROWS você saberá quanta linhas existem em seu arquivo. Para isto você deverá usar a consultaSELECT FOUND_ROWS() que deverá ser executada logo após a primeira. Depois é só avançar sua consulta com a cláusula LIMITSELECT * FROM minhatabela LIMIT x,100Onde x é o elemento que variará até o fim do arquivo. O legal deta técnica é que ela permite a paginação para frente, para traz e saltitante direto para uma página específica ou para o inicio ou para o fim da tabela.
-
Faça assim: SELECT * FROM clientes c INNER JOIN servicos s ON s.serv_id = cli_serv_id WHERE cli_serv_id = o-cliente-que-você-quer-ver
-
A duplicação é normal, sim. Pois o select retorna o produto cartesiano(os campos do select) da interseção(inner join) dos conjuntos(tabelas) relacionados. Na segunda parte da pergunta, "se tem como fazer algo mais limpo", a resposta é depende do objetivo de sua consulta. Para o exemplo mostrado em seu post a resposta é não. É melhor tratar via programa.
-
Como retroagir os valores de uma chave primária ao apagar um registro?
pergunta respondeu ao marcuscunha de Denis Courcy em MySQL
Este é um problema que observo constantemente com usuários DUMMIES. Qual o problema de deixar o ID com o número + 1? Se a resposta for Estética então continuarei afirmando que é bobagem. Se vocês seguirem a regra de que uma chave primária é UNICAMENTE para ligar uma tabela a outra, então esquecerão estas bobagens de "ACERTAR" campos IDs que só causam inconsistências nos bancos de dados. Quanto a sua segunda pergunta (criar um novo registro seja 1 e não o valor do id do último registro + 1.), Use o TRUNCATE TABLE no lugar de DELETE FROM. O truncate apagará os dados da tabela e recomeçará a contagem do auto_increment em 1. -
Sim. Acerte a chave primária com ID na tabela em que o dado está inconsistente.
-
Velho problema do (subquery returns more than 1 row)
pergunta respondeu ao tércio fernandes de Denis Courcy em MySQL
Oi 'tércio fernandes', Já tentou assim: update meubanco.produto set descricao = (select DISTINCT shop.descricao_produto from sso.produtos shop where shop.codigo_produto_loja in (7732, 7179)); -
Se você ler o manual do MySQL saberá que estes são os arquivos que guardam os dados de tabelas e indices do engine MyISAM. Para carregá-los você terá que parar o serviço do banco, criar uma pasta com o nome do banco que você quer (esta pasta deverá ser criada dentro da pasta onde o MySQL armazerna seus dados.) reiniciar o serviço do mysql. Leia o manual para mais detalhes.
-
(Resolvido) SELECT + GROUP BY de um bloco de resultados!
pergunta respondeu ao GuiOr de Denis Courcy em MySQL
Oi 'GuiOr' Estude sobre GROUP_CONCAT. Ele se aplica ao campo X de seu exemplo. A grosso modo, seu select seria assim: SELECT GROUP_CONCAT(exemplo.X) AS X, exemplo.Y, exemplo.Z FROM (SELECT X, Y, Z FROM (SELECT IFNULL(X,'') X, IFNULL(Z,'') Z, (SELECT c.nome FROM banco1.tabela1 a LEFT JOIN banco1.tabela2 c ON c.id = a.id WHERE a.cod = b.cod) Y FROM banco1.tabela3 b WHERE rej IN (0) GROUP BY X, Y) result GROUP BY result.Z,result.X,result.Y) exemplo GROUP BY exemplo.Y; Purifique a idéia. -
Oi Rafael, Por favor alise o modelo em anexo. As linhas em azul foram as ligações que corrigimos entre cliente x carrinho x produto. A linha em vermelho e a em preto foram definidas por você em seu script original. Poderia, por favor, responder as perguntas abaixo? 1 - O que faz a tabela adm e por que produto e funcionário se ligam a ela? 2 - Para que serve a tabela sac e como esta tabela se relaciona com seu sistema? 3 - Que relação há entre carrinho e ADM? papelaria.pdf
-
(Resolvido) Concatenação entre linhas com group by
pergunta respondeu ao Victor Magalhães de Denis Courcy em MySQL
Sim, tem como. basta usar o GROUP_CONCAT. Veja o exemplo: SELECT GROUP_CONCAT(nome_subcategoria) AS nome_subcategoria, id_anuncio FROM minhatabela GROUP BY id_anuncio Leia mais sobre o GROUP_CONCAT, no manual do MySQL de sua Versão, para determinar formas de ordenação e formas de separação dos campos. -
Um dos erros pode ser porque o select dentro da cláusula VALUES pode estar retornando mais de uma linha. Informe o erro para avaliarmos.
-
Você errou na ordem. Não é carrinho que se liga em produto. é produto que se liga em carrinho. O script correto é esse: SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; CREATE SCHEMA IF NOT EXISTS `tua-papelaria`; USE `tua-papelaria`; -- ----------------------------------------------------- -- Table `tua-papelaria`.`funcionario` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tua-papelaria`.`funcionario` ( `id_funcionario` INT NOT NULL AUTO_INCREMENT , `login_func` VARCHAR(45) NOT NULL , `senha_func` VARCHAR(45) NOT NULL , PRIMARY KEY (`id_funcionario`) )ENGINE = INNODB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; -- ----------------------------------------------------- -- Table `tua-papelaria`.`cliente` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tua-papelaria`.`cliente` ( `id_cliente` INT NOT NULL AUTO_INCREMENT , `nome_cli` INT NOT NULL , `telefone_cli` INT NOT NULL , `endereco_cli` VARCHAR(200) NOT NULL , `bairro_cli` VARCHAR(200) NOT NULL , `numero_cli` VARCHAR(45) NOT NULL , `complemento_cli` VARCHAR(45) NOT NULL , `cep_cli` INT NOT NULL , `email_cli` VARCHAR(200) NOT NULL , `senha_cli` VARCHAR(45) NOT NULL , PRIMARY KEY (`id_cliente`) )ENGINE = INNODB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; -- ----------------------------------------------------- -- Table `tua-papelaria`.`carrinho` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tua-papelaria`.`carrinho` ( `id_carrinho` INT NOT NULL AUTO_INCREMENT , `quantidade` INT NOT NULL , `sessao` TEXT NOT NULL , `cliente_id_cliente` INT NOT NULL DEFAULT 0, `produto_id_produto` INT NOT NULL DEFAULT 0, PRIMARY KEY (`id_carrinho`) , INDEX `fk_carrinho_cliente1` (`cliente_id_cliente` ASC) , CONSTRAINT `fk_carrinho_cliente1` FOREIGN KEY (`cliente_id_cliente` ) REFERENCES `tua-papelaria`.`cliente` (`id_cliente` ) ON DELETE NO ACTION ON UPDATE NO ACTION, INDEX `fk_carrinho_produto1` (`produto_id_produto` ASC) , CONSTRAINT `fk_carrinho_produto1` FOREIGN KEY (`produto_id_produto` ) REFERENCES `tua-papelaria`.`produto` (`id_produto` ) ON DELETE NO ACTION ON UPDATE NO ACTION )ENGINE = INNODB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; -- ----------------------------------------------------- -- Table `tua-papelaria`.`produto` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tua-papelaria`.`produto` ( `id_produto` INT NOT NULL AUTO_INCREMENT , `produto` VARCHAR(200) NOT NULL , `descricao` VARCHAR(500) NOT NULL , `valor` VARCHAR(100) NOT NULL , `especie` VARCHAR(45) NOT NULL , `img` BLOB NOT NULL , PRIMARY KEY (`id_produto`) )ENGINE = INNODB; -- ----------------------------------------------------- -- Table `tua-papelaria`.`adm` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tua-papelaria`.`adm` ( `id_adm` INT NOT NULL AUTO_INCREMENT , `login_adm` VARCHAR(45) NOT NULL , `senha_adm` VARCHAR(45) NOT NULL , `funcionario_id_funcionario` INT NOT NULL , `produto_id_produto` INT NOT NULL , PRIMARY KEY (`id_adm`) , INDEX `fk_adm_funcionario` (`funcionario_id_funcionario` ASC) , INDEX `fk_adm_produto1` (`produto_id_produto` ASC) , CONSTRAINT `fk_adm_funcionario` FOREIGN KEY (`funcionario_id_funcionario` ) REFERENCES `tua-papelaria`.`funcionario` (`id_funcionario` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_adm_produto1` FOREIGN KEY (`produto_id_produto` ) REFERENCES `tua-papelaria`.`produto` (`id_produto` ) ON DELETE NO ACTION ON UPDATE NO ACTION )ENGINE = INNODB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; -- ----------------------------------------------------- -- Table `tua-papelaria`.`sac` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `tua-papelaria`.`sac` ( `id_sac` INT NOT NULL AUTO_INCREMENT , `nome_sac` VARCHAR(45) NOT NULL , `email_sac` VARCHAR(200) NOT NULL , `telefone_sac` VARCHAR(45) NOT NULL , `comentario_sac` VARCHAR(500) NOT NULL , PRIMARY KEY (`id_sac`) )ENGINE = INNODB DEFAULT CHARACTER SET = latin1 COLLATE = latin1_swedish_ci; SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-
Não. A ligação entre Produto e carrinho é um para muitos e a ligação entre cliente e carrinho, também é de um para muitos Carrinho já é a ligação muitos para muitos entre produtos e clientes. Você não pode criar indice sem campos associados. Informe o campo entre parenteses.
-
O que você quer não é trigger. É schedulle. Só fornecido a partir da versão 5.1 do MySQL. Leia mais no manual de sua versão.
-
Movendo MySQL -->> VB
-
Esta questão foi respondida hoje neste tópico:Inserir valor Chave esatrangeira
-
Pode remover a tabela produto_has_carrinho e ligar produto a carrinho. Carrinho será a tabela intermediária entre clientes e produto. Ou seja a tabela que fará a ligação muitos patra muitos entre cliente e produto.
-
Oi 'Leovip', Da mesma forma que você não pode ter filho sem pai, não há como ter frete sem empresa. Neste relacionamento, Empresa é tabela 'pai' e Frete é tabela 'filha'. Em todos os relacionamentos 1:N o lado um do relacionamento é sempre uma tabela 'pai' daquele relacionamento. Nos relacionamentos 1:1, um deles será o 'pai' e outro 'filho'. Relacionamentos N:M não existem no mundo físico dos bancos de dados (Neste caso há uma tabela intermediária que faz 1:N N:1). Finalizando, cadastre uma empresa primeiro e depois você poderá cadastrar fretes para ela.
-
Tópico duplicado. Tópico fechado
-
Concordo com o Vitor. Porém, melhorando um pouco sua modelagem, você poderia ter a tabela PRODUTO e a tabela CATEGORIA A tabela PRODUTO teria um ID da tabela CATEGORIA mostrando um relacionamento de uma categoria existente e muitos produtos. Este ID em PRODUTO seria a chave estrangeira para CATEGORIA. Finalizando, seu modelo teria 3 tabelas. PRODUTO, CATEGORIA e CARRINHO.
-
A versão que você usa é a Community(free) ou a Enterprise(paga)? A segunda permite mais de um processador.
-
A partir da versão 5.x a cláusula TYPE foi substituida pela cláusula ENGINE. Escreva "ENGINE=InnoDB" no lugar de "TYPE=InnoDB"