Ir para conteúdo

POWERED BY:

Arquivado

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

Buxexa

Interligar tabelas

Recommended Posts

Bom é o seguinte galera, eu tenho 3 tabelas:

forum_users > é onde tem o username e rank_clan // username= usuario, rank_clan= id do clan do usuario

clan_nomes > onde tem id, clan_nome, clan_sigla, clan_dono, clan_subdono, clan_descricao // os nomes ja se auto explicam

clan_cfs > onde tem id, data, time1_clan, time2_clan // id= qualquer 1, data= data do clanfronto, time1_clan= id do clan1, time2_clan= id do clan2

 

Aí eu tenho uma página em que mostram os clanfrontos agendados. Por exemplo:

7/3/07 às 20hs, [bAG] vs .HoLY.

 

Como eu faço para exibir isso? Na minima noção que eu tenho o inner join vai ter que estar ligado o time1 à sigla do seu respectivo clan, mas o time2 também vai ter mostrar sua sigla, então quando eu retorno o clan_sigla, está aparecendo repitido aqui

7/3/07 às 20hs, [bAG] vs [bAG]

 

Outra coisa, eu coloquei o forum_users ali pra saber também como eu faço pra ligar o username a sigla do seu clan, pois na página pessoal dele tem de aparecer o próximo clanfronto de seu clã.

 

Esse negócio ta me consumindo, é pior que o http://forum.imasters.com.br/public/style_emoticons/default/devil.gif

Agradeço a quem poder me ajudar! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, você pode fazer com INNER JOIN.

 

Exemplo:

 

SELECT	data,	cn1.clan_sigla AS sigla1, # 1ª sigla	cn2.clan_sigla AS sigla2  # 2ª siglaFROM clan_cfs AS cf	INNER JOIN clan_nomes AS cn1	ON cn1.id = cf.time1_clan		INNER JOIN clan_nomes as cn2	ON cn2.id = cf.time2_clan
Quanto à outra questão, levando em consideração que o campo data da tabela clan_cfs esteja armazenando datas no formato inglês, você poderia fazer algo como:

 

SELECT	username,	cn.clan_sigla,	cf.data	FROM forum_users AS fu	INNER JOIN clan_nomes AS cn	ON cn.id = fu.rank_clan		INNER JOIN clan_cfs AS cf	ON (cf.time1_clan = cn.id OR cf.time2_clan = cn.id) AND cf.data >= CURDATE()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, você pode fazer com INNER JOIN.

 

Exemplo:

 

SELECT	data,	cn1.clan_sigla AS sigla1, # 1ª sigla	cn2.clan_sigla AS sigla2  # 2ª siglaFROM clan_cfs AS cf	INNER JOIN clan_nomes AS cn1	ON cn1.id = cf.time1_clan		INNER JOIN clan_nomes as cn2	ON cn2.id = cf.time2_clan
Quanto à outra questão, levando em consideração que o campo data da tabela clan_cfs esteja armazenando datas no formato inglês, você poderia fazer algo como:

 

SELECT	username,	cn.clan_sigla,	cf.data	FROM forum_users AS fu	INNER JOIN clan_nomes AS cn	ON cn.id = fu.rank_clan		INNER JOIN clan_cfs AS cf	ON (cf.time1_clan = cn.id OR cf.time2_clan = cn.id) AND cf.data >= CURDATE()
Mas tipo, você colocou cn1.clan_sigla e cn2.clan_sigla, mas não existem esses campos. São apenas clan_nomes.sigla (Tabela clan_nomes e campo sigla).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu apenas utilizei os nomes que você citou:

clan_nomes > onde tem id, clan_nome, clan_sigla, clan_dono, clan_subdono, clan_descricao // os nomes ja se auto explicam

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu apenas utilizei os nomes que você citou:

clan_nomes > onde tem id, clan_nome, clan_sigla, clan_dono, clan_subdono, clan_descricao // os nomes ja se auto explicam

Consegui fazer funcionar! Mas só a primeira parte.Tipo eu tenho 3 tabelas, forum_users (onde tem o usuario e seu clan id), clan_nomes (onde tem a sigla do clan e o id do clan), e o clan_cf(onde tem a data do cf, time1, time2). é o seguinte, na página index tem que retornar a data do proximo clanfronto independente de ser qualquer clan essa eu consegui fazer nessa consulta:
// Esse código retornar os 5 prximos clanfrontos na página index. Da seguinte maneira:// Data - Time1 VS Time2// 19/03/07 às 13:00 - ClanAzul vs ClanVerde<? $query_dbr_cf = "SELECT    cfs_data,    cn1.cn_sigla AS sigla1,     cn2.cn_sigla AS sigla2,	cn1.cn_id AS clan1, 	cn2.cn_id AS clan2FROM clan_cfs AS cf    INNER JOIN clan_nomes AS cn1    ON cn1.cn_id = cf.time1_clan        INNER JOIN clan_nomes as cn2    ON cn2.cn_id = cf.time2_clan		WHERE cfs_data >= CURDATE()	ORDER BY cfs_data ASC";$query_limit_dbr_cf = sprintf("%s LIMIT %d, %d", $query_dbr_cf, 0, 5);$dbr_cf = mysql_query($query_limit_dbr_cf, $rank) or die(mysql_error());$dbr_cf_v = mysql_fetch_assoc($dbr_cf);?><center><? 	   $data = $dbr_cf_v['cfs_data']; 	   $data_formatada=substr($data, 8,2)."/".substr($data, 5,2)."/".substr($data, 2,2)." s ".substr($data, 11,5);	   echo $data_formatada; 	   ?><br /><a href="?url=Clan&id=<? echo $dbr_cf_v['clan1']; ?>"><? echo $dbr_cf_v['sigla1']; ?></a> VS <a href="?url=Clan&id=<? echo $dbr_cf_v['clan2']; ?>"><? echo $dbr_cf_v['sigla2']; ?></a></center>
Mas na página pessoal do usuario tem q mostrar a data do proximo cf so q do clan dele e tem que aparecer a sigla do clan em que vou enfrentar, como faço isso? Eu já fiz seu segundo código, só que não consigo retornar o nome do time adversário, só consigo retornar o nome do próprio time do usuário.

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.