joaocasta Posted August 11, 2012 at 10:03 AM Report Share #472008 Posted August 11, 2012 at 10:03 AM (edited) 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 August 11, 2012 at 02:19 PM by softklin Titulo alterado Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 11, 2012 at 10:12 AM Report Share #472009 Posted August 11, 2012 at 10:12 AM o que queres dizer com "chamar tabelas" IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
joaocasta Posted August 11, 2012 at 11:06 AM Author Report Share #472012 Posted August 11, 2012 at 11:06 AM Eu quero mostrar os dados das duas tabelas, receitas_valores e despesas_valores. Neste momento só estou a mostrar as despesas Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 11, 2012 at 11:09 AM Report Share #472013 Posted August 11, 2012 at 11:09 AM copy-paste ... ou queres apresentar tudo misturado ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
joaocasta Posted August 11, 2012 at 11:16 AM Author Report Share #472016 Posted August 11, 2012 at 11:16 AM Tudo misturado, algo assim: Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 11, 2012 at 11:17 AM Report Share #472017 Posted August 11, 2012 at 11:17 AM então tens de usar isto : http://dev.mysql.com/doc/refman/5.0/en/union.html IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
joaocasta Posted August 11, 2012 at 12:34 PM Author Report Share #472019 Posted August 11, 2012 at 12:34 PM (edited) 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 August 11, 2012 at 12:34 PM by joaocasta Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 11, 2012 at 12:57 PM Report Share #472020 Posted August 11, 2012 at 12:57 PM 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 Portugol Plus Link to comment Share on other sites More sharing options...
joaocasta Posted August 11, 2012 at 02:03 PM Author Report Share #472023 Posted August 11, 2012 at 02:03 PM 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: Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 11, 2012 at 06:16 PM Report Share #472034 Posted August 11, 2012 at 06:16 PM tens de ordenar .... agora a pergunta é : porque parâmetro pretendes ordenar ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
joaocasta Posted August 11, 2012 at 08:19 PM Author Report Share #472047 Posted August 11, 2012 at 08:19 PM a data.. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 11, 2012 at 08:46 PM Report Share #472048 Posted August 11, 2012 at 08:46 PM (SELECT ...) UNION (SELECT ...) ORDER BY ...; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
joaocasta Posted August 11, 2012 at 09:13 PM Author Report Share #472050 Posted August 11, 2012 at 09:13 PM nao fez como eu queria..... Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 11, 2012 at 09:14 PM Report Share #472051 Posted August 11, 2012 at 09:14 PM faz post do query que criaste IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
joaocasta Posted August 11, 2012 at 09:16 PM Author Report Share #472053 Posted August 11, 2012 at 09:16 PM (edited) 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 August 11, 2012 at 09:32 PM by joaocasta Link to comment Share on other sites More sharing options...
brunoais Posted August 11, 2012 at 09:35 PM Report Share #472054 Posted August 11, 2012 at 09:35 PM @joaocasta faltam os parentesis. "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to comment Share on other sites More sharing options...
joaocasta Posted August 12, 2012 at 09:00 AM Author Report Share #472068 Posted August 12, 2012 at 09:00 AM faltam? acho que nao preciso, pois tenho isto: $result = mysql_query($sql); ou preciso na mesma? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 12, 2012 at 09:07 AM Report Share #472069 Posted August 12, 2012 at 09:07 AM (edited) .... no SQL !!! (SELECT ...) UNION (SELECT ...) ORDER BY ...; Edited August 12, 2012 at 09:07 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
joaocasta Posted August 12, 2012 at 09:36 AM Author Report Share #472070 Posted August 12, 2012 at 09:36 AM nao te percebi agora. desculpa a igorancia. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted August 12, 2012 at 09:41 AM Report Share #472071 Posted August 12, 2012 at 09:41 AM (edited) 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 August 12, 2012 at 09:41 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now