Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kimura

[Resolvido] Dificuldade para exibir dados relacionados entre 3 ta

Recommended Posts

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.

 

Imagem Postada

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

SELECT problema.descricaoproblema , solucao.descricaosolucao FROM problema_x_solucao INNER JOIN problema, solucao ON (problema.idproblema = problema_x_solucao.idproblema) AND (solucao.idsolucao = problema_x_solucao.idsolucao);

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/

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Kimura,

 

Caso precise de suporte particular, consulte o Mercado iMasters ou a área de Ofertas para Freelancers

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dessa forma fica fácil. Olha a imagem:

 

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.