Ir para conteúdo

Arquivado

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

Giihh

Inner Join, Left Join e Right Join

Recommended Posts

Bom dia,

 

Estou tentando seguir a seguinte lógica

 

5 tabelas recebem cadastros diferentes.

 

1 usuario

2 personagem

3 local (de acordo com o local selecionado aparacem os produtos disponíveis para o personagem, são dois tipos)

4 Produto tipo 1

5 Produto tipo 2

 

No relacionamento das tabelas

 

1 tabela - Usuario

2 tabela - usuario (tabela 1) seleciona um personagem (algum id tabela 2)

3 tabela - usuário seleciona um local (algum id tabela 3) que o personagem (id da tabela 2) tem como preferencia, automaticamente aparecem os itens da tabela 4 e 5 que estão disponiveis no local selecionado.

4 tabela - usuario seleciona produto tipo 1 que aparecerão de acordo com o id (local) selecionado na tabela 3

5 tabela - usuario seleciona produto tipo 2 que aparecerão de acordo com o id (local) selecionado na tabela 3

 

 

Os Cruds das 5 tabelas (mysql e php) consigo fazer, mas quero aprender como usar no mysql INNER JOIN, LEFT JOIN e RIGHT JOIN e se é um desses mesmo que tenho que usar.

 

Agradeço quem puder ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saudações.

 

Dá uma estudada aqui camarada, quando terminar você certamente saberá do que se trata.

 

http://www.devmedia.com.br/inner-cross-left-rigth-e-full-joins/21016

 

Abraço.


Se tiver dúvidas ainda assim, pergunte novamente. Se entendeu, também nos informe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigada vamos ver se entendi. Tem um sistema que estou estudando e nele tem muitos JOINs. Mas relacionamento na tabela mesmo, com foreign key, não tem nenhum.

 

Então por exemplo:

 

join('produtos AS pd', 'pd.id_produto = uso_produto.pd_ID');

 

Assim as duas tabelas tanto produto como uso_produto terão os campo pd_ID e id_produto com valor idêntico, ou seja o mesmo "id".

 

Mas o que acontece, é que a tabela uso_produtos é usada como histórico, tem joins com ids de outras tabelas como usuario, filial, etc, então quando exclui um produto (id_produto), ele realmente é excluido, e todos os campos que tem o referente id na tabela uso_produtos ficam vazios, essa tabela que seria um historico de uso fica com "defeito" já que informações que deveriam ficar sempre lá foram deletadas.

 

E no php (sistema criado no codeigniter) parece um monte de erros, especificamente na pagina Histórico de uso do produto.

 

Gostei e entendi a funcionalidade do join mas ai pergunto como contornar esse problema, pra ser possivel excluir e não comprometer o que já esta salvo no DB?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o registro está vazio, então ele não tem vínculo. O correto era utilizar Foreing Key, assim ao excluir o registro relacionado, ele também seria apagado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente, o que ocorre é que os relacionamentos estão ocorrendo no "código php" através de varios joins, ao meu ver o que resolveria é criar uma condição php que identificaria se o id apenas passou pelo processo de cadastro, se sim pode ser deletado, mas se aconteceu algum join com outra tabela, pra não permitir excluir, deve criar uma condição no php, nisso evita erros de apagar algum cadastro que faça parte de um historico.

 

Agora assim, em relação ao desempenho das consultas no DB desse jeito vai ter problemas com lentidão se um historico de uso for grande?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende. Toda consulta, se não efetuada corretamente, irá afetar o desempenho do servidor. Porém, não acredito que esse seja o seu caso.

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.