Jump to content

[Resolvido] Juntar informação de duas tabelas


joaocasta

Recommended Posts

Como posso chamar duas tabelas.. elas tem dados diferentes mas os nomes das colunas sao quase iguais. Tenho este codigo:


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

if (empty($_SESSION['username'])) {

// não existe sessão iniciada
// neste caso, levamos o utilizador para a página de login
header('Location: login.php');
exit();
}

error_reporting (E_ALL ^ E_NOTICE);
if (!empty($_POST['receitadinheiro'])) {
if($_SERVER['REQUEST_METHOD'] == 'POST'){

//guarda os dados em variáveis
$receita = ($_POST['receita']);
$id_referente = ($_POST['referente']);

if ($receita == "" && $id_referente == "")
{
echo "";
}
else {

$id_utilizador = (int)$_SESSION['id'];
$data = date('d/m/Y');


$sql = mysql_query("INSERT INTO receitas_valores (id_utilizador, `receita`, `data`, `id_referente_receita` ) VALUES('$id_utilizador', '$receita', '$data', '$id_referente')") or die(mysql_error());
}
}
}
if (!empty($_POST['despesadinheiro'])) {
if($_SERVER['REQUEST_METHOD'] == 'POST'){

//guarda os dados em variáveis
$despesa = ($_POST['despesa']);
$id_referente = ($_POST['selector']);

if ($despesa == "" && $id_referente == "")
{
echo "";
}
else {

$id_utilizador = (int)$_SESSION['id'];
$data = date('d/m/Y');


$sql = mysql_query("INSERT INTO despesas_valores (id_utilizador, `despesa`, `data`, `id_referente_despesa` ) VALUES('$id_utilizador', '$despesa', '$data', '$id_referente')") or die(mysql_error());
}
}
}
?>

<form method="POST" action="">
<p align="center"><font color="#008000" size="2">Receita 
</font><input type="text" name="receita" size="11" >   
<?php
$q = 'SELECT id, receita FROM receitas';
$result = mysql_query($q);
echo '<select name="referente">'; $c='';
while ($row = mysql_fetch_array($result)) {
echo '<option value="'.$row['id'].'">'.$row['receita'].'</option>';
}
echo '</select>'; ?></p><input type="submit" name="receitadinheiro" value="Adicionar" name="B1"><input type="reset" value="Apagar" name="B2">
</form>
<form method="POST" action="">
<p align="center"><font size="2" color="#FF0000">Despesa 
<input type="text" name="despesa" size="11"> 
<?php
$q = 'SELECT id, despesa_categoria FROM despesas';
$result = mysql_query($q);
echo '<select name="selector">'; $c='';
while ($row = mysql_fetch_array($result)) {
echo '<option value="'.$row['id'].'">'.$row['despesa_categoria'].'</option>';
}
echo '</select>'; ?>
 </font></p>
<p align="center"> </p>
<p align="center"><input type="submit" name="despesadinheiro" value="Adicionar" name="B3"><input type="reset" value="Apagar" name="B4">
</p>
</form>
<p> </td>
</tr>
</table>
<table border="1" width="71%" bordercolorlight="#000000" cellspacing="0" cellpadding="0">
<tr>
<td width="140"><font size="1" color="#008000">Receitas </font>
<font size="1"><font color="#008000"></font> - <?php
$q = 'SELECT SUM(receita) AS receita FROM receitas_valores';
$result = mysql_query($q);
while ($row = mysql_fetch_array($result)) {
echo $row['receita'];
$receita = $row['receita'];
}
?>€</font></td>
<td width="176"><font size="1"><font color="#FF0000">Despesas </font>
- <?php
$q = 'SELECT SUM(despesa) AS despesa FROM despesas_valores';
$result = mysql_query($q);
while ($row = mysql_fetch_array($result)) {
echo $row['despesa'];
$despesa = $row['despesa'];
}
?>€</font></td>
<td width="127"><font size="1"><b><font color="#008000">Saldo actual -</font></b> 
<?php
$saldoactual = $receita - $despesa;
echo $saldoactual;

$result = mysql_query("update contas_total set saldo_actual='$saldoactual';");		
if (mysql_affected_rows()==0) {
$result = mysql_query("insert into contas_total (saldo_actual) values ('$saldoactual');");
}

?>€</font></td>
</tr>
</table>
<p> </p>
<p><b><font size="2">Estrato de valores adicionados</font></b></p>
<table border="1" width="96%" bordercolorlight="#000000" cellspacing="0" cellpadding="0" bordercolordark="#FFFFFF">
<tr>
<td align="center" width="67"><font size="2">Data</font><p>
<font size="2">--------------</font></p>
<p><font size="2" color="#008000"><?php echo $data;?></font></p></td>
<?php echo $receita; ?>
<?php echo $despesa; ?>
Referente:
Modalidade:

</tr>
</table>
<?php $sql = "SELECT despesas_valores.id, despesas_valores.`data`, despesas_valores.despesa, despesas.despesa_categoria FROM despesas_valores
INNER JOIN despesas ON despesas_valores.id_referente_despesa = despesas.id";
$result = mysql_query($sql);

echo "<table border='1' cellspacing='0' align='center'>";
echo "<tr class='reservas'>
<th>Modalidade</th>
<th>Data</th>
<th>Referente</th>
<th>Valor</th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr><td>";
echo $row['id'];
echo "</td>";
echo "<td>";
echo $row['data'];
echo "</td>";
echo "<td>";
echo $row['despesa_categoria'];
echo "</td>";
echo "<td>";
echo $row['despesa'];
echo "</td></tr>";

}
echo "</table>";
?>

Nesta parte:


while($row = mysql_fetch_array($result))
{
echo "<tr><td>";
echo $row['id'];
echo "</td>";
echo "<td>";
echo $row['data'];
echo "</td>";
echo "<td>";
echo $row['despesa_categoria'];
echo "</td>";
echo "<td>";
echo $row['despesa'];
echo "</td></tr>";

}
echo "</table>";

Queria mostrar as colunas, id, data, receita_categoria e receita... mas nao sei como fazer isso na query que tenho em cima.

Agradeço uma ajudazinha obrigado.

Edited by softklin
Titulo alterado
Link to comment
Share on other sites

  • Replies 45
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

algo assim?:

 $sql = "SELECT despesas_valores.id, despesas_valores.`data`, despesas_valores.despesa, despesas.despesa_categoria FROM despesas_valores
INNER JOIN despesas ON despesas_valores.id_referente_despesa = despesas.id
UNION
SELECT receitas_valores.id, receitas_valores.`data`, receitas_valores.receita, receitas.receita_categoria FROM receitas_valores
INNER JOIN receitas ON receitas_valores.id_referente_receita = receitas.id";
$result = mysql_query($sql);
Edited by joaocasta
Link to comment
Share on other sites

sim será isso

tens de ter em conta somente

- o número de colunas das tabelas da união tem de ser igual

- os tipos de dados de cada coluna das tabelas da união teem de ser respectivamente iguais

- o nome das colunas do resultado serão sempre dados pelas colunas da primeira tabela da união

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

nao percebi bem o que disseste...

fiz isto:

<?php $sql = "SELECT despesas_valores.id, despesas_valores.`data`, despesas_valores.despesa, despesas.despesa_categoria FROM despesas_valores
INNER JOIN despesas ON despesas_valores.id_referente_despesa = despesas.id
UNION
SELECT receitas_valores.id, receitas_valores.`data`, receitas_valores.receita, receitas.receita_categoria FROM receitas_valores
INNER JOIN receitas ON receitas_valores.id_referente_receita = receitas.id";
$result = mysql_query($sql);
echo "<table border='1' cellspacing='0' align='center'>";
echo "<tr class='reservas'>
<th>Modalidade</th>
<th>Data</th>
<th>Referente</th>
<th>Valor</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr><td>";
echo $row['id'];
echo "</td>";
echo "<td>";
echo $row['data'];
echo "</td>";
echo "<td>";
echo $row['despesa_categoria'];
echo "</td>";
echo "<td>";
echo $row['despesa'];
echo "</td></tr>";
}
echo "</table>";
?>

só que aparece-me primeiro as despesas e depois as receitas queria que fosse por exemplo:

inseria receita (aparecia a receita), inseria despesa (aparecia seguidamente da receita), e depois fazia uma receita e aparecia debaixo da despesa e nao da receita.

os dados aparecem-me assim:

2G1ff.png

Link to comment
Share on other sites

SELECT despesas_valores.id, despesas_valores.`data`, despesas_valores.despesa, despesas.despesa_categoria FROM despesas_valores
INNER JOIN despesas ON despesas_valores.id_referente_despesa = despesas.id
UNION
SELECT receitas_valores.id, receitas_valores.`data`, receitas_valores.receita, receitas.receita_categoria FROM receitas_valores
INNER JOIN receitas ON receitas_valores.id_referente_receita = receitas.id ORDER BY Data

os dados ficam, despesa, despesa, receita, receita. mesmo fazendo isso de ordenar pela data

Edited by joaocasta
Link to comment
Share on other sites

olha para o teu SQL

 SELECT despesas_valores.id, despesas_valores.`data`, despesas_valores.despesa, despesas.despesa_categoria
   FROM despesas_valores INNER JOIN despesas ON despesas_valores.id_referente_despesa = despesas.id
UNION
 SELECT receitas_valores.id, receitas_valores.`data`, receitas_valores.receita, receitas.receita_categoria
   FROM receitas_valores INNER JOIN receitas ON receitas_valores.id_referente_receita = receitas.id
ORDER BY DATA

o order by está a ser aplicado à segunda tabela, tens de dizer que é ao resultado da união

(SELECT ...) /* <--- parenteses */
UNION
(SELECT ...) /* <--- parenteses */
ORDER BY ...;
Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.