Jump to content


Photo

Select E Join Em 4 Tabelas


  • Faça o login para participar
3 replies to this topic

#1 Bassila

Bassila

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 28/11/2008, 09:23

Boa noite, pessoal..

Antes de postar aqui.. dei uma boa procurada no fórum.. até achei alguma coisa parecida.. mas nao foi o bastante pra fazer meu código rodar..

O problema é o seguinte.. tenho 4 tabelas

categorias (categorias_id, categorias_name)
linhas (linhas_id, linhas_name)
marcas (marcas_id, marcas_name)
produtos (produtos_id, produtos_codbranil, produtos_codoriginal, produtos_mp, produtos_unidade, produtos_aplicacao, produtos_image, linhas_id, marcas_id, categorias_id, produtos_jogo produtos_jogopai)

O que acontece é o seguinte, se eu dou um pesquisar numa peça que tá cadastrada como 2 marcas e categorias diferentes.. o resultado sai com as duas peças com marcas e categorias iguais.

Segue abaixo o código pra exemplificar.

<?php
		include("config/config.php");

		$search		= $_POST['search'];
		$assunto 	= $_POST['assunto'];

		$consulta_l					= mysql_query("SELECT * FROM produtos p INNER JOIN linhas l ON p.linhas_id = l.linhas_id");
		$linha	 					= mysql_fetch_array($consulta_l);

		$consulta_c			 		= mysql_query("SELECT * FROM produtos p INNER JOIN categorias c ON p.categorias_id = c.categorias_id");
		$categoria					= mysql_fetch_array($consulta_c);
		
		switch ($assunto):
			  case 0:
				$consulta = mysql_query("SELECT * FROM produtos WHERE produtos_codbranil='$search'");
			break;
			case 1:
				echo 'em desenvolvimento';	
			break;
			case 2:
				echo 'em desenvolvimento';	
			break;
			case 3:
				echo 'em desenvolvimento';	
			break;
			case 4:
				echo 'em desenvolvimento';		
			break;
		endswitch;
		
		if(mysql_num_rows($consulta) == 0){
		echo 'Nenhum produto foi encontrado';}
		else { 
		while ($row = mysql_fetch_array($consulta)){
			$consulta_m	= mysql_query("SELECT * FROM produtos p LEFT JOIN marcas m ON p.marcas_id = m.marcas_id WHERE p.produtos_codbranil='$search'");
			while($marca = mysql_fetch_array($consulta_m)){
				$path = "images/produtos/".$row['produtos_image'];
				$path2 = "./images/marcas/".$marca['marcas_image'];
	?>
	  <p align="left"><font color="#FFFFFF" size="4" face="Verdana, Arial, Helvetica, sans-serif">>> 
		<? echo strtoupper($linha['linhas_name']); ?> &gt;&gt; <? echo strtoupper($marca['marcas_name'])?> 
		&gt;&gt; <? echo strtoupper($row['produtos_codbranil']); ?> </font><br>
		<br />
		<br>
	  </p>
	  <table width="655" border="0" cellspacing="2" cellpadding="2">
		<tr>
		  <td><div align="center"><img src='<?php echo $path;?>'"><br />
			  <font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Código 
			  Branil:&nbsp; <? echo strtoupper($row['produtos_codbranil'])?> <br />
			  </strong></font></div></td>
		</tr>
	  </table>
	  <table width="655" height="154" border="0" align="center" cellpadding="2" cellspacing="2">
		<tr> 
		  <td width="100" rowspan="10" valign="top"><img src='<?php echo $path2;?>' width="100" height="100" /></td>
		</tr>
		<tr> 
		  <td width="129"><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Linha:</font></div></td>
		  <td width="406"><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($linha['linhas_name']); ?></font></div></td>
		</tr>
		<tr> 
		  <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Categoria:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 
			  <? echo strtoupper($categoria['categorias_name']); ?></font></div></td>
		</tr>
		<tr> 
		  <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Código 
			  Original:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($row['produtos_codoriginal']); ?></font></div></td>
		</tr>
		<tr> 
		  <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Matéria 
			  Prima:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($row['produtos_mp']); ?></font></div></td>
		</tr>
		<tr> 
		  <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Unidade:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($row['produtos_unidade']); ?></font></div></td>
		</tr>
		<tr> 
		  <td valign="top"><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Aplicação:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($row['produtos_aplicacao']); ?></font></div></td>
		</tr>
	  </table>	  
<br />
		  <a href="catalogo.php"><font color="#000066" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Voltar</strong></font></a></p>
	  <?
}}}
?>

alguém ai pra me ajudar?

Edição feita por: Bassila, 28/11/2008, 00:14.


#2 ricardo7

ricardo7

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Não informado

Posted 28/11/2008, 14:51

Boa noite, pessoal..

Antes de postar aqui.. dei uma boa procurada no fórum.. até achei alguma coisa parecida.. mas nao foi o bastante pra fazer meu código rodar..

O problema é o seguinte.. tenho 4 tabelas

categorias (categorias_id, categorias_name)
linhas (linhas_id, linhas_name)
marcas (marcas_id, marcas_name)
produtos (produtos_id, produtos_codbranil, produtos_codoriginal, produtos_mp, produtos_unidade, produtos_aplicacao, produtos_image, linhas_id, marcas_id, categorias_id, produtos_jogo produtos_jogopai)

O que acontece é o seguinte, se eu dou um pesquisar numa peça que tá cadastrada como 2 marcas e categorias diferentes.. o resultado sai com as duas peças com marcas e categorias iguais.

Segue abaixo o código pra exemplificar.

<?php
		include("config/config.php");

		$search		= $_POST['search'];
		$assunto 	= $_POST['assunto'];

		$consulta_l					= mysql_query("SELECT * FROM produtos p INNER JOIN linhas l ON p.linhas_id = l.linhas_id");
		$linha	 					= mysql_fetch_array($consulta_l);

		$consulta_c			 		= mysql_query("SELECT * FROM produtos p INNER JOIN categorias c ON p.categorias_id = c.categorias_id");
		$categoria					= mysql_fetch_array($consulta_c);
		
		switch ($assunto):
			  case 0:
				$consulta = mysql_query("SELECT * FROM produtos WHERE produtos_codbranil='$search'");
			break;
			case 1:
				echo 'em desenvolvimento';	
			break;
			case 2:
				echo 'em desenvolvimento';	
			break;
			case 3:
				echo 'em desenvolvimento';	
			break;
			case 4:
				echo 'em desenvolvimento';		
			break;
		endswitch;
		
		if(mysql_num_rows($consulta) == 0){
		echo 'Nenhum produto foi encontrado';}
		else { 
		while ($row = mysql_fetch_array($consulta)){
			$consulta_m	= mysql_query("SELECT * FROM produtos p LEFT JOIN marcas m ON p.marcas_id = m.marcas_id WHERE p.produtos_codbranil='$search'");
			while($marca = mysql_fetch_array($consulta_m)){
				$path = "images/produtos/".$row['produtos_image'];
				$path2 = "./images/marcas/".$marca['marcas_image'];
	?>
	  <p align="left"><font color="#FFFFFF" size="4" face="Verdana, Arial, Helvetica, sans-serif">>> 
		<? echo strtoupper($linha['linhas_name']); ?> &gt;&gt; <? echo strtoupper($marca['marcas_name'])?> 
		&gt;&gt; <? echo strtoupper($row['produtos_codbranil']); ?> </font><br>
		<br />
		<br>
	  </p>
	  <table width="655" border="0" cellspacing="2" cellpadding="2">
		<tr>
		  <td><div align="center"><img src='<?php echo $path;?>'"><br />
			  <font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Código 
			  Branil:&nbsp; <? echo strtoupper($row['produtos_codbranil'])?> <br />
			  </strong></font></div></td>
		</tr>
	  </table>
	  <table width="655" height="154" border="0" align="center" cellpadding="2" cellspacing="2">
		<tr> 
		  <td width="100" rowspan="10" valign="top"><img src='<?php echo $path2;?>' width="100" height="100" /></td>
		</tr>
		<tr> 
		  <td width="129"><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Linha:</font></div></td>
		  <td width="406"><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($linha['linhas_name']); ?></font></div></td>
		</tr>
		<tr> 
		  <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Categoria:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 
			  <? echo strtoupper($categoria['categorias_name']); ?></font></div></td>
		</tr>
		<tr> 
		  <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Código 
			  Original:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($row['produtos_codoriginal']); ?></font></div></td>
		</tr>
		<tr> 
		  <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Matéria 
			  Prima:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($row['produtos_mp']); ?></font></div></td>
		</tr>
		<tr> 
		  <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Unidade:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($row['produtos_unidade']); ?></font></div></td>
		</tr>
		<tr> 
		  <td valign="top"><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Aplicação:</font></div></td>
		  <td><div align="left"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><? echo strtoupper($row['produtos_aplicacao']); ?></font></div></td>
		</tr>
	  </table>	  
<br />
		  <a href="catalogo.php"><font color="#000066" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Voltar</strong></font></a></p>
	  <?
}}}
?>

alguém ai pra me ajudar?



Ja tentou incluir nestas consultas sql o group by ??
faça o teste

att
Ricardo

#3 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 28/11/2008, 15:07

Cara, eu olhei o seu tópico umas três vezes e não entendi muita coisa.
VOcê tem três selectes diferentes pra pegar a mesma coisa, se entendi...
SDerá que se vocÊ fizesse tudo em um só, não rolava?

#4 Bassila

Bassila

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado

Posted 28/11/2008, 15:36

Opa!


Achoooo q nao me expressei beeem.. talvez o problema desse erro é pq eu estou dividindo esse SELECT..

Mas eu nao consegui fazer tudo num só..




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq