Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal
Estou tentando fazer um select de auto-relacionamento de N-N, com base no der da imagem:
Nesse caso cada 'marker' tem um auto-relacionamento com outros 'markers' de um tipo diferente. Isso porque o 'marker' do Tipo 1 representa um 'lote' e os 'markers' de outros tipos (2,3,4,5,6,...) representam outros estabelecimentos que ficam próximos a determinado 'marker' do tipo 1.
Minha intenção é retornar algo assim:
rua | bairro | cep | cidade | tipo | | rua | bairro | cep | cidade | tipo |
xx | xx | xx | xx | 1 | | yy | yy | yy | yy | 2 |
xx | xx | xx | xx | 1 | | qq | qq | qq | qq | 4 |
xx | xx | xx | xx | 1 | | rr | rr | rr | rr | 10 |
zz | zz | zz | zz | 1 | | tt | tt | tt | tt | 5 |
zz | zz | zz | zz | 1 | | ee | ee | ee | ee | 7 |
zz | zz | zz | zz | 1 | | uu | uu | uu | uu | 3 |
Desde já agradeço qualquer auxílio.
Bem, minha intenção é que seja por proximidade, no entanto gerei esse relacionamento independente disso, permitindo a inserção com o relacionamento diretamente no banco. Estou considerando essa limitação de proximidade como regra de negócio. E considerando as inserções feitas estou tendo dificuldades em fazer o select com o auto relacionamento para trazer os markers e seus respectivos estabelecimentos (outros markers)
Não ajudou , ao menos ao mim , teria um exemplo ?
Bom, na prática o relacionamento N-N é intercedido pela tabela 'tb_markertipo' (como pode ver na imagem) e nela tem o 'id_marker_lote' e 'id_marker_tipo' e essas duas fk reference ao 'id_marker' da tabela 'tb_marker', o 'id_marker_lote' são os cadastros da tabela 'tb_marker' que possuem o tipo 1 (da tabela descritiva 'tb_tipo') e o 'id_marker_tipo' são os cadastros da tabela 'tb_marker' que possuem o tipo diferente de 1. Exemplo:
marker lote do endereço xxxxx se relaciona com o estabelecimento do endereço yyyyy, o estabelecimento do endereço zzzz e o estabelecimento do endereço wwww.
Não sei se consigo ser mais claro.
Algo assim +/- assim?!
pelo que entendi é instanciar a tabela TB_MARKER duas vezes , uma para "tipo" e outra para "lote"
SELECT *
FROM TB_TIPOMAKER , TB_MARKER MARKER_LOTE, TB_MARKER MARKER_TIPO
WHERE MARKER_LOTE.ID_MARKER = TB_TIPOMAKER.ID_MARKER_LOTE
AND MARKER_TIPO.ID_MARKER = TB_TIPOMAKER.ID_MARKER_TIPO
>
21 minutos atrás, WBlacker disse:
Nesse caso cada 'marker' tem um auto-relacionamento com outros 'markers' de um tipo diferente. Isso porque o 'marker' do Tipo 1 representa um 'lote' e os 'markers' de outros tipos (2,3,4,5,6,...) representam outros estabelecimentos que ficam próximos a determinado 'marker' do tipo 1.
Qual seriaa relação entre estes 'markers' ? Alguma chave ? Proximidade de endereço ?