Ir para conteúdo

POWERED BY:

Arquivado

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

Murilo Machado

MYSQL - Chave estrangeira

Recommended Posts

Fala galera, beleza? Preciso de um help!

Estou criando um ambiente com compartilhamento de clientes entre vários escritórios. Porém, antes de "sair compartilhando", preciso criar uma rede entre os escritórios "amigos".


Achei que era tranquilo, mas agora acabei me perdendo no relacionamento das tabelas.

Tenho a tabela clientes e escritório relacionadas (N:N) funcionando perfeitamente.

O problema esta na rede de escritórios amigos. Como faço o relacionamento de N:N numa mesma tabela? Ou seja, preciso relacionar escritórios com escritórios, ou algo que solucione isto. The question is, HOW?

Help! Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido!

Criei uma tabela "rede", relacionada com escritórios (1:1). Onde cada escritório terá uma rede.

 

E, posteriormente criei uma tabela "redes_has_escritórios", relacionamento N:N.

Se alguém tiver uma ideia melhor, compartilhe...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma pergunta ?

 

Quem determina se dois escritórios são amigos ?

 

O Escritório da Alice pode se declarar amigo do Escritório do Beto mas este não reconhecer

esta amizade

 

Assim um modelo

 

escritorio

--------------

cod

nome

 

 

escritorios_amigos

----------------------------

cod_escirtorio (fk escritorio.cod)

cod_escirtorio_amigo (fk escritorio.cod)

 

deve resolver

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quem determina são os próprios escritórios.

É exatamente esse fluxo que tu citou, o "Escritório X" adiciona o "Escritório Y" e ele tem a opção de "aceitar/recusar".

 

Caso aceite, ambos podem trocar clientes.

 

Referente ao teu exemplo, estava exatamente aí minha dúvida. Eu criei uma tabela "rede" antes, pra depois adicionar "escritórios" - totalmente desnecessário.

 

Mas fiz isso porque não sabia se podia criar uma tabela com dois campos relacionados à mesma chave estrangeira.

Tem certeza que posso seguir este seu exemplo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue como ficou a estrutura da tabela:

CREATE TABLE escritorio_has_escritorio (
  escritorio_idescritorio INTEGER UNSIGNED NOT NULL,
  escritorio_idescritorio2 INTEGER UNSIGNED NOT NULL,
  situacao VARCHAR(1) NOT NULL,
  data_convite DATETIME NOT NULL,
  PRIMARY KEY(escritorio_idescritorio, escritorio_idescritorio2),
  INDEX escritorio_has_escritorio_FKIndex1(escritorio_idescritorio),
  INDEX escritorio_has_escritorio_FKIndex2(escritorio_idescritorio2),
  FOREIGN KEY(escritorio_idescritorio)
    REFERENCES escritorio(idescritorio) ON DELETE NO ACTION ON UPDATE NO ACTION,
  FOREIGN KEY(escritorio_idescritorio2)
    REFERENCES escritorio(idescritorio) ON DELETE NO ACTION ON UPDATE NO ACTION
)
ENGINE=InnoDB;

Fiz os testes e fluiu 100%!

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma ajudinha rápida
tenho o seguinte cógigo php:

$sql_insert_NFs = "INSERT INTO `NFs` (`chave`,`status`, `numero`, `valor_total`, `unidade_fornecedor_id`) VALUES ('$chave','$status','$num_NF','$valor_NF','$id_tab_unidade_forn');
INSERT INTO `contas_a_pagar` (`qtd_parcelas`,`status`,`total`, `NFs_id`) VALUES ('$Num_de_parcelas',1, '$valor_NF', LAST_INSERT_ID());
";

 

O problema é que retorna o seguinte erro:

Erro: (1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO `contas_a_pagar` (`qtd_parcelas`,`status`,`total`, `NFs_id`) VALUES ' at line 2

 

alguém pode me ajudar?

é mysql 5.6

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.