Ir para conteúdo

POWERED BY:

Arquivado

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

newton_filho

consulta relacionada mysql

Recommended Posts

eu tenho quero fazer uma consulta relacionada... tipo eu sei fazer aparecer na tela aquilo que esta no banco de dados, no meu banco de dados por exemplo eu tenho um relacionamento de tabelas... ai no caso ta só retornando o valor salvo... mas eu queria o valor relacionado
ex:
pesquisa1= 1
pesquisa2= 2
pesquisa3= 3
eu sei fazer aparecer o 1, 2 e o 3... mas eu queria que aparecesse os valores cujo eu relacionei no caso os nomes das pesquisas
aqui esta meu banco de dados:

http://www.4shared.com/photo/PZPQ4rujba/20150616_104209.html?

ps:os nomes de tudo é em minusculo mas só sei escrever em letra de forma kkk

 

aqui esta o codigo:

<?php 
//o usuario só acessara esta pagina caso tenha feito logon
session_start();
if(!isset($_SESSION["supervisoes"]) || !isset($_SESSION["senha"])){
	header("Location: login.php");
	exit;
	}else{
		echo"voce esta logado";
		}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sem título</title>
</head>

<body>
<table border="1">
<tr>
	<td><b>Pesquisa:</b></td>
	<td><b>Total Previsto:</b></td>
    <td><b>Total Coletado:</b></td>
    <td><b>Percentual(%):</b></td>
    <td><b>Mês:</b></td>
    <td><b>Ano:</b></td>

</tr>

<?php
include("conexao.php");
?>
<?php
include("globais.php");
?>

<!-- Coluna De Pesquisa -->
<?php
$sql = mysql_query( "SELECT * FROM coleta ORDER BY id_coleta DESC" );
while( $exibe = mysql_fetch_assoc( $sql ) ) {
	$mes = $meses_global[ $exibe['mes'] - 1 ];
	$total_coletado = $exibe['total_coleta'];
	$previsto_coleta = $exibe['previsto_coleta'];
	if($previsto_coleta <= 0){
		$previsto_coleta=1;
		$resultado = ($total_coletado / $previsto_coleta)*100; 
		}
	$resultado = ($total_coletado / $previsto_coleta)*100; 
	$resultado_final = number_format($resultado,2,",",".");
	$output = "<div><tr>
	<td>{$exibe['pesquisas']}</td>
	<td>{$exibe['previsto_coleta']}</td>
	<td>{$exibe['total_coleta']}</td>
	<td>{$resultado_final}%</td>
	<td>{$mes}</td>
	<td>{$exibe['ano']}</td>
	</tr>";

	echo $output;

}
?> 

</table>
</body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ler mais sobre JOIN neste link.

 

Mas vou tentar explicar um pouco sobre cada um dos que eu conheço:

 

 

CROSS JOIN

 

Faz o relacionamento todos por todos, relaciona todos os registros da tabela principal com todos os registros da tabela secundária (relacionada).

 

Observação: não há critério de relacionamento, por isso relaciona todos vs todos.

 

Syntax:

SELECT p.campo1, p.campo2, r.campo2
FROM tabela_principal AS p
CROSS JOIN tabela_relacionada AS r
WHERE p.campo1 = "valor 1"

INNER JOIN

 

Faz o relacionamento entre as tabelas, porém, diferente do CROSS JOIN, precisa de um critério de relacionamento (cláusula ON), e retorna somente os itens que foram relacionados. Por exemplo, se na tabela principal existirem 32 registros, mas somente 1 possui relacionamento com a tabela relacionada, somente este registro será retornado.

 

Syntax:

SELECT p.campo1, p.campo2, r.campo2
FROM tabela_principal AS p
INNER JOIN tabela_relacionada AS r
  ON r.campo1 = p.campo1
WHERE p.campo1 = "valor 1"

LEFT JOIN

 

Faz o relacionamento entre as tabelas, retornando todos os itens da tabela principal, independente de ter encontrado relacionamento. Quando não encontrar relacionamento, os campos da tabela relacionada terão valor NULL.

 

Syntax:

(Semelhante ao INNER JOIN)

SELECT p.campo1, p.campo2, r.campo2
FROM tabela_principal AS p
LEFT JOIN tabela_relacionada AS r
  ON r.campo1 = p.campo1
WHERE p.campo1 = "valor 1"

RIGHT JOIN

 

Ao contrário do LEFT JOIN, retorna todos os registros da tabela relacionada, independente de ter encontrado relacionamento. Quando não encontrar relacionamento, os campos da tabela principal terão valor NULL.

 

Syntax:

(também semelhante ao INNER JOIN)

SELECT p.campo1, p.campo2, r.campo2
FROM tabela_principal AS p
RIGHT JOIN tabela_relacionada AS r
  ON r.campo1 = p.campo1
WHERE p.campo1 = "valor 1"

Agora, também pode utilizar mais de um JOIN, na query abaixo, minha intenção é fazer a contagem de coletas de cada supervisor:

SELECT u.supervisor, s.supervisoes, COUNT(c.id_coleta) qtd_coletas
FROM usuarios AS u
INNER JOIN supervisoes AS s
  ON s.id_supervisoes = u.supervisoes
LEFT JOIN coleta AS c
  ON c.supervisoes = s.id_supervisoes

Espero que minha explicação tenha ficado, ao menos, compreensível.

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.