Ir para conteúdo

POWERED BY:

Arquivado

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

KUROL3

select left join

Recommended Posts

Olha que estranho que aconteceu... usei SELECT * FROM musicas M LEFT JOIN usuarios U ON U.id = M.quem_enviou ORDER BY M.cantor ASCfuncionow certinhoseguindo a mesma logica... fiz assimSELECT * FROM musicas M LEFT JOIN usuarios U ON (U.id = M.quem_enviou) LEFT JOIN fotos F ON (F.id_usuario = M.quem_enviou) ORDER BY M.cantor ASCo que eu queria era pegar os ids que existe da tabela usuario e fotos relacionados com a tabela musica..Deis dois F5 para atualizar a pagina... rsrss derrubou o meu servidor dedicado lá na locaweb.... rsrssSo lembrando que as tabelas contem os seguintes registros:Musicas 400Usuarios 20.000Fotos 9.000Parece que para cada laço da while ele esta rodando os 9.000 registros... como disse funcionow uma vez depois de mais de 20 segundos.. ai dei F5 caiu o servidor ou seja o MySql não abria mais novas conexoes..Abraço....Kurol3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Na sua última consulta você escreveu isso:

 

"Traga para mim, SGBD, do banco de dados <tal>, esses dados: quero todos as músicas, relacionadas ou não a um usuário e desse conjunto, que chamarei de A, em traga tudo que se relaciona ou não com o conjunto de fotos, B"

 

...ou seja, você trouxe 29.400 registros, dentre valores reais e nulos. Dependendo de como está ajustada sua banda de transferência na locaweb ou se o servidor MySQL estiver numa máquina com muitos compartilhamentos de memória, relamente cairá. Não por causa do MySQL, mas sim por causa da configiração do servidor.

 

Qualquer dúvida, continue postando!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

então qual seria o select correto....... (dar 3 select?????)

 

fazer issu ??

 

tabela 1

 

usuarios //nome da tabela

id = 1, nome='marco aurélio', email='kurole@kurole.com'

id = 2, nome='nayane', email='nayane@kurole.com'

id = 3, nome='marcio', email='marcio@kurole.com'

 

tabela 2

 

musicas //nome da tabela

id = 1, cantor='ricardadao', estilo='to com sua muié' quem_enviou=''

id = 2, cantor='da poutrona', estilo='seranejo' quem_enviou=''

id = 3, cantor='zaza', estilo='cor sim cornao' quem_enviou='2'

id = 4, cantor='maria', estilo='papai noel' quem_enviou='3'

id = 5, cantor='josue', estilo='vai ou racha' quem_enviou=''

 

tabela 3

 

fotos//nome da tabela

id = 1, foto='sei_la.jpg', id_usuario=''

id = 2, foto='sei_la2.jpg', id_usuario=''

id = 3, foto='sei_la3.jpg', id_usuario=''

id = 4, foto='sei_la4.jpg', id_usuario='2'

id = 5, foto='sei_la5.jpg', id_usuario='3'

 

 

eu queria que saisse assim

 

todas as musicas

o usuario relacionado com a tabela musica

e as fotos relacionada com a tabelas de usuario que esta relacionada com a tabela musica..

 

bom acho que é issu...

KUROLE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou fazer um INNER JOIN ou um LEFT JOIN com os campos:

 

usuarios.id;

musicas.quem_enviou;

fotos.id_usuario;

 

A consulta abaixo trará os resultados de todas as correspondências entre as tabelas:

 

SELECT musicas.*, usuario.nome, fotos.foto
FROM musicas AS a INNER JOIN usuarios AS b
ON a.quem_enviou = b.id INNER JOIN fotos AS c
ON b.id = c.id_usuario

 

A consulta abaixo trará todos os registros, relacionados ou não:

 

SELECT musicas.*, usuario.nome, fotos.foto
FROM musicas AS a LEFT JOIN usuarios AS b
ON a.quem_enviou = b.id LEFT JOIN fotos AS c
ON b.id = c.id_usuario

 

Qualquer dúvida, continue postando!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom vou reformular minha pergunta do zero com os campos reais do banco................................

 

tabela mural //

 

CREATE TABLE `mural` (  `id` int(250) NOT NULL auto_increment,  `nome` varchar(250) NOT NULL default '',  `usuario` varchar(250) NOT NULL default '',  `id_cadastro` varchar(250) NOT NULL default '',  `email` varchar(250) NOT NULL default '',  `para` varchar(250) NOT NULL default '',  `data` varchar(250) NOT NULL default '',  `hora` varchar(250) NOT NULL default '',  `msg` longtext NOT NULL,  `ip` varchar(250) NOT NULL default '',  `m_foto` varchar(250) NOT NULL default '',  `bloqueia` varchar(250) NOT NULL default '',  PRIMARY KEY  (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3244;

tabela de hinos //

 

CREATE TABLE `HINOS` (  `id` int(250) NOT NULL auto_increment,  `nome` varchar(250) NOT NULL default '',  `nome_avulso` varchar(255) NOT NULL,  `cd_nome` varchar(255) NOT NULL,  `numero` varchar(250) NOT NULL default '',  `comentario` mediumtext NOT NULL,  `cantor` varchar(250) NOT NULL default '',  `categoria` varchar(250) NOT NULL default '',  `arquivo` varchar(250) NOT NULL default '',[b]  [color="#8B0000"]`usuario` varchar(250) NOT NULL default '',[/color][/b]  `mostra` varchar(250) NOT NULL default '',  `download` int(250) NOT NULL default '0',  `data` varchar(250) NOT NULL default '',  `hora` varchar(250) NOT NULL default '',  `tamanho` varchar(255) NOT NULL default '',  `excluido` varchar(255) NOT NULL,  PRIMARY KEY  (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7891;

tabela de usuarios //

 

CREATE TABLE `USR` (  `id` int(250) NOT NULL auto_increment,  `nome` varchar(250) NOT NULL default '',  `data` varchar(250) NOT NULL default '',  `email` varchar(250) NOT NULL default '',  `email2` varchar(250) NOT NULL default '',  `foto` varchar(250) NOT NULL default '',  `flog` varchar(250) NOT NULL default '',   `radio` varchar(255) default NULL,  PRIMARY KEY  (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=17011;

 

quano o usuario esta logado no meu site... ele consegue postar hinos... ok.....

 

quando ele posta hino ta tabela de HINOS como você ve acima o campo usuario é preenchido com o id do USR e quando eu posto hino pela administracao o usuario.HINOS fica em branco...

 

bom até ai tudo bem..

 

agora eu queria fazer o seguinte..

 

SELECIONAR O MURAL (todos os registros) na tabela do mural no campo usuario eu tenho os id.USR (dos usuarios) de todos os usuarios que postou.

 

baseado nesses informacoes.. eu queria que:

 

- Se o usuario que postou tivesse HINO (ou seja se na tabela de HINOS no campo usuario houvesse um id = ao usuario que postou no mural.. que selecione este registro... e tb se na tabela usuario (USR) fosse o mesmo id de quem postou no mural (selecione esse registro tb)..

 

tentei as dus que você postou mas nao deu certo nao...

 

Aguardo

Marco.......................

Compartilhar este post


Link para o post
Compartilhar em outros sites

quero trazer os tos registros do mural vinculado com os usuarios (que postaram) order by id desc sendo que para cada registro do mural que ouver Hinos na tabela de HINOS mostrar tb

 

estou fazendo isso hj

 

"SELECT M.nome as nome_mural, M.email as email_mural,M.*,U.flog, U.foto FROM mural M LEFT JOIN USR U ON (M.id_cadastro = U.id) and M.bloqueia = '' ORDER BY M.id DESC LIMIT $inicio, $reg_p_pag"while ($deus = @ mysql_fetch_assoc($result)){//

 

depois em baixo

 

$verifica_setemhino = @ mysql_query("select * from HINOS where usuario = '".$deus['id_cadastro']."'");if ( @ mysql_num_rows($verifica_setemhino) != 0){echo '<a title="Clique aqui e veja todos os meus hinos enviados" target="_top" href="inicio.php?email_acesso_mural='.$deus['id_cadastro'].'">Meus hinos enviados </a>';}}//fecha while.....

 

 

Marco

 

KUROLE

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.