Ir para conteúdo

Arquivado

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

Rogerio Pancini

Fazer join com oito tabelas

Recommended Posts

Boa tarde pessoal.

 

Join de um tabela com outra eu até me viro.

Para entregar um projeto, que acabou se tornando bem complexo, eu fiz a tela sem join.
Hoje eu consegui sentar e analisar o que faltou dessa tela.

 

Tenho  a tb_empresas que precisa fazer join com outras oito tabelas.

 

É possível fazer join com essa quantidade de tabelas?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

é mas a performance vai ficar prejudicada principalmente quando estiver falando de milhares de registros...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode realizar joins com quantas tabelas for necessário. Não existe limite.

 

Qual é a sua dúvida/dificuldade em implementar os joins?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que pegou foi quando não tem um campo de alguma tabela.

 

Eu reproduzi o select, pois o original está no meio do Datatables e colocar tudo aqui ficaria meio confuso, mas vamos lá:

 

				<?php
				$campos = "tb_empresas.id, tb_empresas.gerente, tb_empresas.representante, tb_empresas.data_criacao, tb_empresas.razao_social, tb_empresas.CodCli, tb_empresas.categoria_base, tb_empresas.cidade, tb_empresas.uf, tb_empresas.plano, tb_empresas.status, 
				
				tb_pagamentos_assinaturas.productPrice";	
				
				
				$table  = "tb_empresas";	
				$requestData = "supermercado";

		
				
				
				$sql_2_t = mysqli_query($config, "SELECT DISTINCT $campos FROM $table 
				
				INNER JOIN tb_gerentes ON (tb_empresas.gerente = tb_gerentes.id_ger)
				INNER JOIN tb_representantes ON (tb_empresas.representante = tb_representantes.id_rep)	
				INNER JOIN tb_clientes ON (tb_empresas.CodCli = tb_clientes.CodCli)
				INNER JOIN tb_categorias ON (tb_empresas.categoria_base = tb_categorias.id)
				INNER JOIN tb_empresas_cat ON (tb_empresas.id = tb_empresas_cat.id_emp)
				INNER JOIN tb_planos ON (tb_empresas.plano = tb_planos.plano)
				INNER JOIN tb_pagamentos_assinaturas ON (tb_empresas.id = tb_pagamentos_assinaturas.codEmpresa)
				
				
				WHERE 1=1 AND ( tb_empresas.id LIKE '%".$requestData."%' OR tb_empresas.data_criacao LIKE '%".$requestData."%' OR tb_empresas.razao_social LIKE '%".$requestData."%' OR tb_empresas.CodCli LIKE '%".$requestData."%' OR tb_empresas.categoria_base LIKE '%".$requestData."%' OR tb_empresas.cidade LIKE '%".$requestData."%' OR tb_empresas.uf LIKE '%".$requestData."%' OR .tb_empresas.plano LIKE '%".$requestData."%'  OR tb_empresas.status LIKE '%".$requestData."%')") or die(mysqli_error($config));
					
				if(@mysqli_num_rows($sql_2_t) <= '0'){
					echo "
						<div class=\"row\">
							<div class=\"col-lg-6\">
								<div class=\"erro_fix\">Sem resultados</div>	
							</div>
						</div>					
					";
				}else{
					while($r_sql_2_t = mysqli_fetch_array($sql_2_t)){
						$teste = $r_sql_2_t[11] . "<br />";	

					}
				}
				?>

Neste exemplo, para "Supermercado", não temos o campo "tb_pagamentos_assinaturas.productPrice".

Por isso ele vai direto para o "Sem resultados" e não exibe os outros campos.

 

Seria possível exibir os campos que encontrar e não exibir os campos que não encontrar?

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

No join da tabela "tb_pagamentos_assinaturas", substitua o INNER por LEFT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
×

Informação importante

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