Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Tenho 3 tabelas:
+----------------+ Ex.:
| problema | 1 | umidade
| id | descricao | 2 | bolor
+----------------+
+----------------+ Ex.:
| solucao | 1 | Repare se existem infiltrações ou vazamentos...
| id | descricao | 2 | ...
+----------------+
+--------------------------+ Ex.:
| problema_x_solucao | 1 | 1
| id_problema | id_solucao | 2 | 1
+--------------------------+
Creio que a imagem abaixo explique o eu preciso.
/applications/core/interface/imageproxy/imageproxy.php?img=http://img444.imageshack.us/img444/6893/civil.jpg&key=f7e422d898e1147fcbd4e0879c63887681e66e6ff6d3769261f58ed4772bba73" alt="Imagem Postada" />
Obrigado.
Banco: Caixa Economica Federal
Agencia: 1553
Operacao: 013
Conta: 00567715-9
Aguardo o deposito e depois envio o código.
Caso precise de suporte particular, consulte o Mercado iMasters ou a área de Ofertas para Freelancers
Olá,
Primeiramente peço desculpas por passar uma ideia de que gostaria que alguém fizesse isso para mim.
Essa nunca foi a minha intensão.
O que estava acontecendo é que eu não estava conseguindo raciocinar uma forma prática de se fazer isso, mas felizmente já a encontrei.
Volto aqui para pedir uma dica, coisa que ainda não fiz. Novamente uma imagem abaixo:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img443.imageshack.us/img443/4193/tabelama.png&key=9729a260985b7ef8399c78347e66969435fbdaab6ed166e5a94797def9cb4140" alt="Imagem Postada" />
Como eu posso fazer um mysql update nessa tabela? Notem, por exemplo, que a solução 1 está relacionada com os problemas 1, 5 e 6.
Supondo que agora a solução 1 só esteja relacionada com os problemas 1 e 6, ou que entrem mais alguns problemas?
Obrigado.
Veja este tutorial, é exatamente o que quer fazer:
http://forum.imasters.com.br/index.php?/topic/140816-mini-tutorial-de-mysql/
Olá,
Te agradeço Beraldo pelo link, mas não me serviu. Não sei se fui claro, vou tentar explicar mais uma vez:
Tenho 3 tabelas: solucao, problema e problema_x_solucao. A tabela problema_x_solucao está relacionando as outras duas tabelas.
Como eu estou trabalhando (php):
---- Gravação das informações ----
1º - Insiro o **problema** na tabela **problema**;
2º - Quando vou inserir a **solução** aproveito para relacioná-la aos problemas (select multiple), gravando a **solução** na sua tabela particular (daí obtenho a id gerada), tendo a id e as opções marcadas (id dos problemas via select multiple) gravo tudo na tabela **problema_x_solucao**.
/applications/core/interface/imageproxy/imageproxy.php?img=http://img443.imageshack.us/img443/4193/tabelama.png&key=9729a260985b7ef8399c78347e66969435fbdaab6ed166e5a94797def9cb4140" alt="Imagem Postada" />
---- Exclusão das Informações ----
Consigo excluir perfeitamente um problema, pois acesso a sua informação na sua tabela particular.
Consigo excluir perfeitamente uma solução, pois acesso a sua informação na sua tabela particular.
---- Alteração das Informações ----
Consigo alterar perfeitamente um problema, pois acesso a sua informação na sua tabela particular.
Consigo alterar perfeitamente uma solução, pois acesso a sua informação na sua tabela particular.
Não sei como acrescentar/excluir as informações da tabela problema_x_solucao, já que os dados estão relacionados. Ex.:
id_problema | id_solucao
1 1
2 1
5 1
6 1
Significa: Os problemas 1,2,5 e 6 estão ligados a solução 1, correto? Mas se eu quiser tirar o problema 5 daí, ou acrescentar algum a mais, como eu faço?
>
Mas se eu quiser tirar o problema 5 daí
id_problema | id_solucao
1 1
2 1
6 1
Retiramos o 5.
>
ou acrescentar algum a mais, como eu faço?
id_problema | id_solucao
1 1
2 1
5 1
6 1
5 2
7 1
Adicionamos o problema 7 e incluímos mais uma solução para o 5
Era essa a dúvida?
Dessa forma fica fácil. Olha a imagem:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img687.imageshack.us/img687/5383/imagemky.png&key=827eee695565a74c0fc16e28be2bd0b66b869328806a70f9869121d7c65b157c" alt="Imagem Postada" />
Supondo que a ID desta solução acima é 1 e as IDs dos problemas marcados sejam 1,4 e 5.
A minha tabela problema_x_solucao seria:
1 | 1
4 | 1
5 | 1
O campo solução aí eu gravo diretamente na tabela da solução.
Ao lado eu tenho vários problemas (select multiple, que estão na tabela de problemas) e estão relacionados a esta solução via problema_x_solucao.
Se eu quiser adicionar mais algum ou remover algum destes, como eu faria isso na tabela problema_x_solucao.
Leia sobre integridade referencial e chaves estrangeiras.
com isso, ao remover algo da tabela "problema" da ou "solução", os registros correspondentes em "problema_solucao" também serão removidos
Primeiro, exclua todos os registros relacionados na tabela problema_x_solucao e depois insira-os novamente. Sempre que fores atualizar um registro de solucao, independentemente de alterar ou não o combobox de problemas(ou vice-versa), o fluxo é o seguinte:
caso solucao nova:
INSERT INTO solucao...
caso solucao existente:
UPDATE solucao ... WHERE solucao_id = $solucao_id
DELETE FROM problema_x_solucao WHERE solucao_id = $solucao_id
e para cada problema relacionado a esta solucao:
INSERT INTO problema_x_solucao (problema_id, solucao_id) VALUES ($problema_id, $solucao_id)
É óbvio que os comandos sql são meramente ilustrativos. Espero que ajude.
Para exibir os dados relacionados é fácil:
SELECT
ifnull(ps.problema_id, 1, 0) AS relacionado,
ps.problema_id,
p.nome
FROM
problema p
LEFT JOIN problema_x_solucao ps ON ps.problema_id = p.problema_id
AND ps.solucao_id = $solucao_id
Listará todos os problemas e os relacionados a solução em questão terão o valor relacionado = 1. Os outros terão relacionado = 0. Aí, monte o combobox e deixe selecionados as soluções onde relacionado = 1.
Relacionamento no Banco pode usa um ON DELETE ao excluir o Solução cod 5 o DB deleta tudo que tiver na tabela problema_x_solucao no campo solução cod 5. Pode usa a tela no Mysql Query (programa encontrado no site do fabricante)
Olá Pessoal,
Agradeço todas as suas dedicações neste tópico.
Consegui resolver o meu problema.
Resumindo a história pra vocês o que eu estava sentindo dificuldade é que eu tenho em uma única página a inserção, alteração e exclusão das informações de três tabelas com conteúdos totalmente diferentes.
Vlw mesmo.
algo assim deve funciona =]
valww
obs: qualquer coisa procure o forum relacionado a banco de dados
http://forum.imasters.com.br/index.php?/forum/179-modelagem-sql/