felini 0 Denunciar post Postado Julho 9, 2010 Fala galera, boa noite! Estou com um problema, comprei um livro pra ver se me ajudava, mas não teve jeito. Quero relacionar 3 tabelas, mas não sei como fazer isso! Oo Tenho a tabela cliente com os dados dos clientes. A tabela produto com os produtos que ofereço. A tabela rel_produto que é pra relacionar a cliente e produto. Resumindo, os clientes podem ter muitos produtos e os produtos podem ter muitos clientes. (Revenda de Hospedagem) Contece que eu não sei como acontece o relacionamento vou colar abaixo o meu SQL, se puderem me ajudar, eu agradeço. CREATE TABLE IF NOT EXISTS `cliente` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(50) NOT NULL, `sobrenome` varchar(100) NOT NULL, `tipo_documento` set('CPF','CNPJ') NOT NULL, `num_documento` varchar(20) NOT NULL, `email` varchar(200) NOT NULL, `fone_fixo` varchar(13) NOT NULL, `fone_celular` varchar(13) NOT NULL, `endereco` varchar(100) NOT NULL, `bairro` varchar(100) NOT NULL, `cidade` varchar(50) NOT NULL, `estado` varchar(2) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; CREATE TABLE IF NOT EXISTS `produtos` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(200) NOT NULL, `valor` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `rel_produto` ( `rel_id` int(11) NOT NULL AUTO_INCREMENT, `id_cliente` int(11) NOT NULL, `id_produto` int(11) NOT NULL, `dominio` varchar(200) NOT NULL, `login` varchar(100) NOT NULL, `senha` varchar(100) NOT NULL, `contrato` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id_cliente`,`id_produto`,`rel_id`), KEY `rel_id` (`rel_id`), KEY `id_produto` (`id_produto`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; ALTER TABLE `rel_produto` ADD CONSTRAINT `rel_produto_ibfk_2` FOREIGN KEY (`id_produto`) REFERENCES `produtos` (`id`), ADD CONSTRAINT `rel_produto_ibfk_1` FOREIGN KEY (`id_cliente`) REFERENCES `cliente` (`id`); Eu tentei fazer um relacionamento, mas não sei se ta certo, se alguém puder me explicar como faço, eu agradeço. []s Compartilhar este post Link para o post Compartilhar em outros sites
Eliseu M. 2 Denunciar post Postado Julho 9, 2010 Algo que recomendo para todas pessoas que desejam fazer queries: baixe um software específico para testá-las. O melhor que conheço é o AquaFold DataStudio. Já aviso que pode dar bastante trabalho, por isso a recomendação do software. Pois bem, o conceito é simples: SELECT * FROM table1, table2 WHERE table1.id=table2.idSacou o esquema do ponto? Primeiro vem o nome da tabela e depois o campo, mesma coisa para impressão dos dados. Daí em diante, você poderá usar AS, LEFT, JOIN, etc. O AS é muito importante para você não se perder, por exemplo: você tem duas tabelas com nomes de campos iguais, mas para imprimir (echo $row['campo'];) um campo ou outro, eles precisam ter nomes diferentes, daí entra o AS :} Falou e boa sorte! Compartilhar este post Link para o post Compartilhar em outros sites
felini 0 Denunciar post Postado Julho 9, 2010 Fala ae Eliseu tranquilo?! Em relação as querys, eu manjo, de como fazer o select e tal! Isso não tem galho! O problema é montar o banco, ele ta estruturado já! Agora não sei como dizer o "o que é o que" dentro dele. Não sei como fazer o relacionamento entre as tabelas, não sei quem é Primary Key quem é Index, constraints, essas coisas! =/ Compartilhar este post Link para o post Compartilhar em outros sites