Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Relacionamento de 3 tabelas


cassiacalaco

Pergunta

Bom dia pessoal,

eu tenho o seguinte problema:

preciso inserir 3 relatorios em 3 tabelas no banco de dados (até ai tudo certo)

mas preciso compara-las para exibir os resultados.

as 3 tabelas tem os campos IP e Hostname em comum, e os outros campos diferentes.

Preciso comparar se o mesmo IP aparece nas 3 tabelas, ou se aparece em 2 delas e não na outra etc, todas as comparações possiveis!

e preciso que isso me retorne ordenado por IP.

Consegui fazer a consulta de quando o IP aparece nas 3 tabelas assim:

SELECT c.*,d.*, o.ip,o.domain, o.computer AS officescan FROM cacic AS c INNER JOIN dhcp AS d ON c.ip = d.ip INNER JOIN officescan AS o ON c.ip=o.ip ORDER BY INET_ATON(c.ip)

achei que poderia usar o mesmo select para as outras modificando apenas o criterio de comparação, mas a questao é que tentei usar por exemplo c.ip is null

mas não existem linhas nulas nas tabelas, se o ip não existe não existe a linha..

então como eu poderia fazer essa comparação?

Se alguém puder me ajudar..!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
select c.*, d.*, o.ip, o.domain, o.computer 
from
    (
        select ip from cacic
        union
        select ip from dhcp
        union
        select ip from officescan
    ) u
    left join
    cacic c on u.ip = c.ip
    left join
    dhcp d on u.ip = d.ip
    left join
    officescan o on u.ip = o.ip
where
    c.ip is null

Editado por Kakao
Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigada! Essa função resolveu tudo!

Desculpe a minha ignorancia, mas quando coloco isso no meu codigo php da erro da linha da query..

sera que voce pode me ajudar nisso tambem?

Segue o codigo php:

<?php

$opcao = $_POST["opcao"];

$conexao = mysql_connect("localhost" , "root");

$banco = mysql_select_db("teste", $conexao);

if ($opcao == 'VERDE'){

$resultado = mysql_query ("select c.ip,c.hostname,c.versao, d.*, o.ip, o.hostname ,o.domain

from

(

select ip from cacic

union

select ip from dhcp

union

select ip from officescan

) u

left join

cacic c on u.ip = c.ip

left join

dhcp d on u.ip = d.ip

left join

officescan o on u.ip = o.ip

where

c.ip=d.ip and c.ip=o.ip and d.ip=o.ip

ORDER BY INET_ATON(c.ip)") or die (erro);

$linhas = mysql_num_rows($resultado);

for($i=0; $i<$linhas ; $i++){

$registro = mysql_fetch_row($resultado);

echo "<tr> <td>";

echo "$registro[0] </td>";

echo "<td> $registro[1] </td>";

echo "<td> $registro[2]</td>";

echo "<td> $registro[3]</td>";

echo "<td> $registro[4]</td>";

echo "<td> $registro[5]</td>";

echo "<td> $registro[6]</td>";

echo "<td> $registro[7]</td>";

echo "<td> $registro[8]</td>";

echo "<td> $registro[9]</td></tr>";

}

echo "</table>";

mysql_close($conexao);

}

Editado por cassiacalaco
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...