PHP MySQL: Compare Data between Two Tables

1

I have the following tables raffle and games in a particular Mysql bank. Home In the draw table, the data of the contest number, 1st drawn, 2nd, 3rd, 4th and 5th decade are stored.
draw table
+ ------------------------------------------------ + Home | competition | so1 | so2 | so3 | so4 | so5

+ ------------------------------------------------ + Home |. . 3916 ... | 13 .. | 26 .. | 44 .. | 64 .. | 68 ..

+ ------------------------------------------------ +

In the table games , the cards played are stored, containing the data as the contest number of the draw, 1st to 5th dozen marked. each game contains an id named game_id which is the P.K of the table.

table games
+ ------------------------------------------------- - + ----- +
| competition | About Us | jo1 | jo2 | jo3 | jo4 | jo5

+ ------------------------------------------------- - + ----- +
|. . 3916 ... | . . 01. . . | 13 | 28. | 44 | 68 | 69.

+ ------------------------------------------------- - + ----- +
|. . 3916 ... | . . 02. . . | 13 | 28. | 44 | 68 | 69.

+ ------------------------------------------------- - + ----- +
|. . 3917 ... | . . 03. . . | 13 | 28. | 44 | 68 | 69.

+ ------------------------------------------------- - + ----- +

<?php

// Variável recebida referente a consulta
$consulta = $_POST["consulta"];
// variável que conecta ao banco 
$pesquisa = $conn->prepare
    ("SELECT * FROM SORTEIO INNER JOIN JOGOS USING(CONCURSO)");  
$pesquisa->execute();  
$resultado = $pesquisa->fetchAll(PDO::FETCH_ASSOC);

// laço para buscar coluna id_jogos, o valor de cada cartela.
foreach($resultado as $r ){
if ($r['concurso'] == $consulta){
// aqui dentro desse laço quero retornar as dezenas acertadas de cada jogo. exemplo, ao consultar o concurso 3916, encontro três jogos na tabela jogos. são as id_jogos 01 e 02. Na id_jogos 01 há três resultados que se repetem, isso quer dizer que acertei três dezenas. exibo os valores acertados, e passo para o id_jogos 02 realizar outra consulta e exibir os valores acertados. e assim sucessivamente, independente da quantidade de jogos tiver.
}
}	

?>
    
asked by anonymous 07.01.2016 / 16:41

1 answer

1

So I understand that it is to display the right dozens of all the games of a given contest, if that is the case, you can filter the contest in SELECT

$sql  = "SELECT * FROM SORTEIO INNER JOIN JOGOS USING(CONCURSO)";
$sql .= "WHERE concurso = {$consulta}";
$conn->prepare($sql);

Below is your code but now comparing and displaying the right dozens

<?php
// Variável recebida referente a consulta
$consulta = $_POST["consulta"];

$sql        = "SELECT * FROM SORTEIO INNER JOIN JOGOS USING(CONCURSO)";
// ou $sql  = "SELECT * FROM SORTEIO INNER JOIN JOGOS USING(CONCURSO)";
//    $sql .= "WHERE concurso = {$consulta}";

// variável que conecta ao banco 
$pesquisa  = $conn->prepare($sql);  
$pesquisa->execute();  
$resultado = $pesquisa->fetchAll(PDO::FETCH_ASSOC);

// laço para buscar coluna id_jogos, o valor de cada cartela.
foreach ($resultado as $r) {

    // este if pode ser removido caso esteja filtrando o concurso no SELECT
    if ($r['concurso'] == $consulta) {            
        $sorteios = array($r['so1'], $r['so2'], $r['so3'], $r['so4'], $r['so5']);
        $jogos    = array($r['jo1'], $r['jo2'], $r['jo3'], $r['jo4'], $r['jo5']);

        // Loop nos jogos
        foreach ($jogos as $jogo) {

            // se jogo foi sorteado, então exibe
            if (in_array($jogo, $sorteios)) {
                echo $jogo;
            }
        }
    }
} ?>
    
08.01.2016 / 17:21