Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wdc_black_

[Resolvido] Ligação entre tabelas

Recommended Posts

eai galera...

gostaria de uma dica de vcs...

qual é a chave ke faz a ligação entre a tabela topics e a tabela posts?

 

por exemplo eu keria pegar e ver os topicos de um determinado post e mostrar somente o primeiro post do tópico...

seria algo +- assim

 

SELECT * FROM topics,posts Where forum_id in (8) and pid = forum_id LIMIT 8

eu sei ke ta errado esse sql..

só que n consegui acha a ligação entre os dois...

alguem tem alguma ideia???

obrigado ;D

 

----- edit

hehehehe eskeci de dizer...

as tabelas são de um forum IPB 3.0.5 :D

:D

Compartilhar este post


Link para o post
Compartilhar em outros sites

por exemplo eu keria pegar e ver os topicos de um determinado post e mostrar somente o primeiro post do tópico...

Não é um post que tem tópicos e sim um tópico que tem posts:

 

SELECT * FROM `posts` WHERE `posts`.`topic` = `topic`.`id`

Compartilhar este post


Link para o post
Compartilhar em outros sites

apresentou esse erro...

Unknown column 'posts.topic' in 'where clause'

eu queria puxar os topicos de 1 determinado forum....

eu tenho esse codigo aqui...

<?php
					/* -------------------------------------------------------------------------------------------
																							Últimos Comentarios do Forum 
							------------------------------------------------------------------------------------------- */  
					require_once( 'conf.php' );
					$INFO = array();
					// --------------------------------------------------------------------------
					$con = mysql_connect($dbhost,$dbuser,$dbpass);
					if (!$con)
					  {
					  die('Could not connect: ' . mysql_error());
					  }
					  mysql_select_db($dbname, $con);
					// -------------------------------------------------------------------------
					//                                              Comando SQL para pegar do banco de dados
					// -------------------------------------------------------------------------
					$Query =  mysql_query("SELECT * FROM `posts` WHERE `posts`.`topic` = `topic`.`id`")or die(mysql_error());
					// --------------------------------------------------------------------------
					?>
					
					<?php
					while ($result = mysql_fetch_assoc($Query))
					{
					?>		
                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td style="background:url(images/menumeio.png) repeat-x top; height:20px;padding-left:10px; font-weight:bold;border-left:1px solid #CCCCCC;border-right:1px solid #CCCCCC;"><?php echo $result['title']?></td>
                  </tr>
                  <tr>
                    <td style="padding:5px 5px 5px 5px;border-left:1px solid #CCCCCC;border-right:1px solid #CCCCCC;border-bottom:1px solid #CCCCCC;"><?php echo $result['post']?></td>
                  </tr>
                  <tr>
                    <td style="text-align:right;"><span style=" border:1px dashed #CCCCCC;padding:2px 2px 2px 2px; color:#404040; font-weight:bold; background-color:#fff;">By: <?php echo $result['member']?></span></td>
                  </tr>
                </table><br />
                <?php
                            }
                            mysql_close($con);
                ?>
conf.php

<?php // conf.php

//!!!edit below here!!!

$dbhost = "localhost"; //mysql host, usually localhost.
$dbuser = "root"; //usuário do banco
$dbpass = ""; //senha do usuário do banco
$dbname = "teste"; //o nome do banco de dados do forum
$forumurl = "http://localhost/forum"; //endereço até a pasta -  Http://www.mysite.com/forum/ only.
$allowedgroup = "Membro"; //the name of the usergroup which is allowed. The admin group is allowed by default, so do not enter that here.
$url = "http://localhost/forum/index.php?/topic/"; //o endereço do forum - mais não altere - index.php?showtopic=  
$userario = "http://localhost/forum/forum?/user/"; //o endereço do forum - mais não altere - ?/user/  

//!!!stop editing here!!!

$forumurl = $forumurl."index.php?act=Reg&CODE=10";

function dbConnect($db="") {
        global $dbhost, $dbuser, $dbpass;
        
        $dbcnx = @mysql_connect($dbhost, $dbuser, $dbpass)
                or die("The site database appears to be down.");
        
        if ($db!="" and !@mysql_select_db($db))         
                die("The site database is unavailable.");
                
        return $dbcnx;
}
?>

mas n está funcionando =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

considerando q forum_id esteja na tabela topics e pid esteja na tabela posts e esta selecionando todos os campos das 2 tabelas

SELECT t.*,p.* FROM topics t inner join posts p on p.pid = t.forum_id where t.forum_id = 8 LIMIT 8

Compartilhar este post


Link para o post
Compartilhar em outros sites

funcionou parcialmente, ele seleciono certinho os titulos dos topicos, mas o conteudo e quem posto n deu certo =/

 

aki ta as estruturas pra ajuda 1 pko...

 

topics

Imagem Postada

 

posts

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

é pq o campo de relacionamento entre as tabelas é tid na tabela topics e topic_id n tabela posts, tenta ae

select t.*,p.* from topics t inner join posts p on t.tid = p.topic_id
onde eu coloquei t.* p.* você deve especificar os campos q forem de seu interesse pra num pega tudo das tabelas

ex: t.title,t.state, p.author_name...

Compartilhar este post


Link para o post
Compartilhar em outros sites

usei assim victor....

 

$Query =  mysql_query("SELECT t.*,p.post,p.author_name,p.* FROM topics t inner join posts p on p.pid = t.forum_id where t.forum_id = 8 LIMIT 8")or die(mysql_error());

mas continua com problema...

Imagem Postada

 

titulo ok, mas ele n está diferenciando os textos e quem posto =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

não ficou legal não, assim ele mostra todos os posts do msm topico...

Imagem Postada

 

 

tava pensando, ele teria ke fazer esse tipo de pesquisa, só que teria ke pegar só o primeiro registro e fazer uma nova pesquisa...

se é que tu me entende hehehe :P

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

intendi sim,eu achu

q tal você usar distinct juntamente com o com group by

tpw

select distinct t.*,p.* from topics t inner join posts p on t.tid = p.topic_id group by t.title
enquanto a nova pesquisa você pode colocar um link dinamico passando o id do topico como parametro para exibir todos os posts

Compartilhar este post


Link para o post
Compartilhar em outros sites

fico assim victor...

"select distinct t.*,p.post,p.author_name,p.* from topics t inner join posts p on t.tid = p.topic_id group by t.title"

mas agora preciso que ele pegue só os topico dos forum_id = 8 e mostrar com limit = 8...

como posso adicionar isso no sql?

fiz aqui mas deu erro...

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta ae

select distinct t.title,t.descricao,p.author_name from topics t inner join 
       posts p on t.tid = p.topic_id where t.forum_id = 8 group by t.title limit 8

outra coisa!! seleciona só os campos q você vai precisar como segue acima exemplo

Compartilhar este post


Link para o post
Compartilhar em outros sites

100% victor ^^

ficou assim

 

$Query =  mysql_query("select distinct t.*,p.post,p.author_name,p.* from topics t inner join posts p on t.tid = p.topic_id where t.forum_id = 8 group by t.title order by t.tid desc limit 5")or die(mysql_error());

vlwwww msm pela ajuda fio...

tu é o cara hehe

abração

tópico resolvido

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.