[RESOLVIDO] Relação entre duas tabelas no mysql

01/08/2019

0

Bom dia galera!

Tenho um programinha e estou com uma duvida e não to sabendo resolver.

tenho duas tabelas ADMS_USUARIOS e ADMS_FORMULARIOS



ADMS_USUARIOS

id
nome
aps
email
usuario
[...]


ADMS_FORMULARIO

id
nome
mes_ano


O usuário vai preencher um formulários e vai ficar gravado seu nome na tabela adms_formulario, ja na tabela adms_usuario ele vai trazer apenas os registros solicitados a partir de um determinado nome solicitado.


EX:. eu preencho um formulario com o nome joão. Depois ele vai ver se na tabela adms_ususario tem o nome joão e vai me retornar quantas vezes o nome joão foi cadastrado, e vai me retornar apenas os nomes "joão".


$resul_form = "select adms_usuarios.id, adms_usuarios.nome, adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano from adms_usuarios inner join adms_formulario on adms_usuarios.nome = adms_formulario.nome ";


eu coloquei esse codigo mais ta me retornando todos os nomes cadastrados.
Francisco Nando

Francisco Nando

Responder

Post mais votado

01/08/2019

Bom dia, Francisco ,

Já tentou usar Left Join ?

tenta ai e depois post o resultado.


Ricardo Araujo

Ricardo Araujo
Responder

Mais Posts

01/08/2019

Jothaz

select adms_usuarios.id, adms_usuarios.nome, adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano 
from adms_usuarios 
inner join adms_formulario on adms_usuarios.nome = adms_formulario.nome
where adms_usuarios.nome = 'joão'
Responder

02/08/2019

Francisco Nando

Bom dia, Francisco ,

Já tentou usar Left Join ?

tenta ai e depois post o resultado.


Tentei Ricardo, da a mesma coisa.
Responder

02/08/2019

Francisco Nando

select adms_usuarios.id, adms_usuarios.nome, adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano 
from adms_usuarios 
inner join adms_formulario on adms_usuarios.nome = adms_formulario.nome
where adms_usuarios.nome = 'joão'
Jothaz eu tentei assim, ate da certo, mais se eu quiser o nome "Maria" por exemplo, como eu faria. Eu quero uma consulta que me traga apenas os nomes que eu clicar. Exe. se clicar em joão, só me trara os formulários do joão, se eu clicar em Maria só me trara os formulários cujo tem são Maria . Desse modo que você mandou ate da certo, mais só no nome joão, se eu clicar no nome Maria vai aparecer apenas os nomes do João
Responder

02/08/2019

Jothaz

select adms_usuarios.id, adms_usuarios.nome, adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano 
from adms_usuarios 
inner join adms_formulario on adms_usuarios.nome = adms_formulario.nome
where adms_usuarios.nome = 'joão'
Jothaz eu tentei assim, ate da certo, mais se eu quiser o nome "Maria" por exemplo, como eu faria. Eu quero uma consulta que me traga apenas os nomes que eu clicar. Exe. se clicar em joão, só me trara os formulários do joão, se eu clicar em Maria só me trara os formulários cujo tem são Maria . Desse modo que você mandou ate da certo, mais só no nome joão, se eu clicar no nome Maria vai aparecer apenas os nomes do João


Concatena a variável clicada no seu select.
Como TAG do post é PHP seque o exemplo abaixo que foi tirado do
https://www.php.net/manual/pt_BR/function.mysql-db-query.php



<?php

if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
    echo 'Não foi possível conectar ao mysql';
    exit;
}

if (!mysql_select_db('mysql_dbname', $link)) {
    echo 'Não foi possível selecionar o banco de dados';
    exit;
}

$sql    = 'select adms_usuarios.id, adms_usuarios.nome, adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano 
from adms_usuarios 
inner join adms_formulario on adms_usuarios.nome = adms_formulario.nome
where adms_usuarios.nome ' . AQUI_SUA_VARIAVEL_CLICADA ;
$result = mysql_query($sql, $link);

if (!$result) {
    echo "Erro do banco de dados, não foi possível consultar o banco de dados\\n";
    echo 'Erro MySQL: ' . mysql_error();
    exit;
}

while ($row = mysql_fetch_assoc($result)) {
    echo $row['foo'];
}

mysql_free_result($result);

?>

Responder

02/08/2019

Francisco Nando

select adms_usuarios.id, adms_usuarios.nome, adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano 
from adms_usuarios 
inner join adms_formulario on adms_usuarios.nome = adms_formulario.nome
where adms_usuarios.nome = 'joão'
Jothaz eu tentei assim, ate da certo, mais se eu quiser o nome "Maria" por exemplo, como eu faria. Eu quero uma consulta que me traga apenas os nomes que eu clicar. Exe. se clicar em joão, só me trara os formulários do joão, se eu clicar em Maria só me trara os formulários cujo tem são Maria . Desse modo que você mandou ate da certo, mais só no nome joão, se eu clicar no nome Maria vai aparecer apenas os nomes do João


Concatena a variável clicada no seu select.
Como TAG do post é PHP seque o exemplo abaixo que foi tirado do
https://www.php.net/manual/pt_BR/function.mysql-db-query.php



<?php

if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
    echo 'Não foi possível conectar ao mysql';
    exit;
}

if (!mysql_select_db('mysql_dbname', $link)) {
    echo 'Não foi possível selecionar o banco de dados';
    exit;
}

$sql    = 'select adms_usuarios.id, adms_usuarios.nome, adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano 
from adms_usuarios 
inner join adms_formulario on adms_usuarios.nome = adms_formulario.nome
where adms_usuarios.nome ' . AQUI_SUA_VARIAVEL_CLICADA ;
$result = mysql_query($sql, $link);

if (!$result) {
    echo "Erro do banco de dados, não foi possível consultar o banco de dados\\\\n";
    echo 'Erro MySQL: ' . mysql_error();
    exit;
}

while ($row = mysql_fetch_assoc($result)) {
    echo $row['foo'];
}

mysql_free_result($result);

?>

Cara boiei na tua explicação.

<?php
if (!isset($seg)) {
exit;
}
include_once 'app/adms/include/head.php';
?>
<body>
<?php
include_once 'app/adms/include/header.php';
?>
<div class="d-flex">
<?php
include_once 'app/adms/include/menu.php';
?>
<div class="content p-1">
<div class="list-group-item">
<div class="d-flex">
<div class="mr-auto p-2">
<h2 class="display-4 titulo">Relatório Individual</h2>
</div>
<div class="p-2">
<?php
$btn_cad = carregar_btn('visualizar/home', $conn);
if ($btn_cad) {;
echo "<a href='" . pg . "/visualizar/home' class='btn btn-outline-success btn-sm'><i class='fas fa-align-justify'></i> Inicio </a>";
}
?>
 
<?php
$btn_cad = carregar_btn('listar/list_formulario', $conn);
if ($btn_cad) {
echo "<a href='" . pg . "/listar/list_formulario' class='btn btn-outline-warning btn-sm'><i class='fas fa-reply'></i> Voltar</a>";
}
?>
</div>
</div>
<?php
if (isset($_SESSION['msg'])) {
echo $_SESSION['msg'];
unset($_SESSION['msg']);
}

//Receber o número da página
$pagina_atual = filter_input(INPUT_GET, 'pagina', FILTER_SANITIZE_NUMBER_INT);
$pagina = (!empty($pagina_atual)) ? $pagina_atual :1;

//Setar a quantidade de itens por pagina
$qnt_result_pg = 60;

//Calcular o inicio visualização
$inicio = ($qnt_result_pg * $pagina) - $qnt_result_pg;
if(($_SESSION['adms_niveis_acesso_id'] == 1) or ($_SESSION['adms_niveis_acesso_id'] == 2) or ($_SESSION['adms_niveis_acesso_id'] == 3)) {

$resul_form = "select adms_usuarios.nome, adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano
from adms_usuarios
Left Join adms_formulario on adms_usuarios.nome = adms_formulario.nome where adms_usuarios.nome ' . ";

//$resul_form = "select adms_formulario.id, adms_formulario.nome, adms_formulario.mes_ano
//from adms_formulario";

//$resul_form = "SELECT fo.id, fo.nome, fo.mes_ano
//FROM adms_formulario fo
//ORDER BY mes_ano ASC LIMIT $inicio, $qnt_result_pg";

}

$resultado_form = mysqli_query($conn, $resul_form);
if (($resultado_form) AND ( $resultado_form->num_rows != 0)) {
?>
<div class="table-responsive">
<table class="table table-striped table-hover table-bordered">
<thead>
<tr>

<th>Nome</th>
<th class="d-none d-sm-table-cell"><center>Competência</center></th>
<th class="text-center">Ações</th>
</tr>
</thead>



uma parte do codigo ai.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar