Eder Cuer 0 Denunciar post Postado Março 26, 2012 Eae galera, estou tentando fazer um filtro, mas estou me enrolando na parte do select, vou tentar explicar. É um sistema de transportadora, onde um usuario escolhe o estado origem, cidade origem, estado destino e cidade destino. Meu sistema tem as seguintes tabelas: mrh (microrregiões). - codigo e nome da microrregião. mrh_cidade (tabela gerada com o relacionamento de cidade com mrh). - nessa tabela tenho o codigo da mrh e codigo da cidade. mrh_estado (relacionamento de mrh com estado). - nessa tabela tenho o codigo da mrh e do estado mrh_tranportadora (relacionamento entre transportadora e mrh). - nessa tabela tenho o codigo da mrh e da transportadora. Na hora de fazer o select tinha que ser feito uma busca das transportadoras que atendam as cidades selecionadas. No meu sistema eu liguei todas as cidades com as microrregiões porque na hora do cadastro o usuário escolhe quais microrregiões a transportadora atende, assim ja engloba varias cidades. Não sei se fui claro, to tentando faz um bom tempo fazer esse select e não estou conseguindo Compartilhar este post Link para o post Compartilhar em outros sites
Eder Cuer 0 Denunciar post Postado Março 28, 2012 Então galera consegui resolver em partes SELECT transportadora.cod_transp, nome FROM mrh_transportadora INNER JOIN transportadora ON transportadora.cod_transp = mrh_transportadora.cod_transp INNER JOIN mrh_cidade ON mrh_cidade.cod_mrh = mrh_transportadora.cod_mrh WHERE mrh_cidade.cod_cid IN ( 14, 15 ) GROUP BY cod_transp Percebi que o select não ta usando os dois codigos, exemplo: Eu tenho que selecionar origem e destino. Vamos supor que eu seleciono 15 e 50. Nenhuma transportadora atende a cidade 50, mas todas atendem a 15, então ele retorna todas as transportadoras mesmo assim, o certo seria selecionar apenas as transportadoras que atendem as duas cidades. Mas se eu seleciono a cidade 15 e 33, ai me aparece só uma transportadora. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Março 28, 2012 Creio que o join deve ser revisto INNER JOIN mrh_cidade ON mrh_cidade.cod_mrh = mrh_transportadora.cod_mrh o join deve ser pela código da cidade, não conheço o modela mais creio que falta alguma coisa aqui. Compartilhar este post Link para o post Compartilhar em outros sites
Eder Cuer 0 Denunciar post Postado Março 29, 2012 E você teria algum exemplo de como eu poderia fazer isto? Compartilhar este post Link para o post Compartilhar em outros sites
Eder Cuer 0 Denunciar post Postado Abril 3, 2012 Consegui resolver Motta, e realmente tava faltando coisa, vlw pelo toque Ficou assim: SELECT t2.cod_transp, t2.nome FROM (SELECT t1.cod_transp, t1.nome FROM transportadora t1 INNER JOIN mrh_transportadora mt1 ON mt1.cod_transp = t1.cod_transp INNER JOIN mrh_cidade mc1 ON mc1.cod_mrh = mt1.cod_mrh WHERE mc1.cod_cid = $Origem) t2 INNER JOIN mrh_transportadora mt2 ON mt2.cod_transp = t2.cod_transp INNER JOIN mrh_cidade mc2 ON mc2.cod_mrh = mt2.cod_mrh WHERE mc2.cod_cid = $Destino Compartilhar este post Link para o post Compartilhar em outros sites