Ir para conteúdo

POWERED BY:

Arquivado

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

Blod

Consulta MySQL

Recommended Posts

Olá pessoal do iMasters, tenho um problema que não estou conseguindo resolver...

 

Tento uma tabela de usuários cadastrados chamada usr_users ela contém:

usr_id - int
usr_login - Varchar
usr_senha - varchar

 

Tenho também a tabela stream_friend:

id - int
usr_id - varchar
friend_id - varchar

 

E tenho a tabela stream_posts:

id- int
usr_id - varchar
texto - text

 

E o meu problema é assim, o usuário (tabela usr_users) vai poder adicionar amigos e na sua página deve aparecer as postagens (tabela stream_posts) somente de seus amigos (tabela stream_friend) e não estou conseguindo fazer isso com uma única consulta, poderiam me auxiliar ?

 

Grato.

 

OBS: A tabela stream_friend vai conter vários dados
//Exemplo
id (id normal Auto increment)
friend_id (id do amigo que ele adicionou)
usr_id (id da pessoa que adicionou aquele amigo)

//Então 1 usuário poderá ter até 200 linhas na tabela stream_friend

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tentei assim mais não deu...

 

SELECT * FROM usr_users usr, stream_post pos INNER JOIN stream_friend usp ON usr.usr_id = usp.usr_id WHERE usr.usr_id = '".$_SESSION["usr_id"]."' AND pos.usr_id = usr.usr_id AND pos.usr_id = usp.usr_id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque usr_id nas outras tabelas não é int ?

 

Nem sei '-', mais assim tá certo, é só para colocar o numero do id do user

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não está certo não, se vai guardar número, use campo do tipo numérico.

 

Tudo bem eu altero mais não é esse meu problema...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente fazer assim, execute a query manualmente em um gerenciador de banco de dados, e poste o resultado.

SELECT * FROM `usr_users` 
INNER JOIN `stream_friend` ON `usr_users`.`usr_id` = `stream_friend`.`usr_id` 
INNER JOIN `stream_posts`  ON `usr_users`.`usr_id` = `stream_posts`.`friend_id` 
WHERE `stream_posts`.`usr_id` = .... 
GROUP BY `usr_users`.`usr_id` 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Executei o código no phpMyAdmin com teste do usuário 1...

 

SELECT * FROM `usr_users` 
INNER JOIN `stream_friend` ON `usr_users`.`usr_id` = `stream_friend`.`usr_id` 
INNER JOIN `stream_post`  ON `usr_users`.`usr_id` = `stream_post`.`friend_id` 
WHERE `stream_post`.`usr_id` = `1`
GROUP BY `usr_users`.`usr_id`

 

Retornou:

#1054 - Unknown column '1' in 'where clause'

 

Eu verifiquei as tabelas e todas elas possuem o usuário 1 como teste...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não se usa apostrofo para passar valores , esse seu '`1`' , tá errado, coloque assim '1' .

SELECT * FROM `usr_users` 
INNER JOIN `stream_friend` ON `usr_users`.`usr_id` = `stream_friend`.`usr_id` 
INNER JOIN `stream_post`  ON `usr_users`.`usr_id` = `stream_post`.`friend_id` 
WHERE `stream_post`.`usr_id` = 1
GROUP BY `usr_users`.`usr_id`

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, é que não sei muita coisa de SQL...nem PHP...

 

Retornou:

#1054 - Unknown column 'stream_post.friend_id' in 'on clause'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aff .. :mellow:

SELECT * FROM `usr_users` 
INNER JOIN `stream_friend` ON `usr_users`.`usr_id` = `stream_friend`.`usr_id` 
INNER JOIN `stream_posts`  ON `stream_friend`.`friend_id` = `stream_posts`.`usr_id` 
WHERE `stream_posts` = 1
GROUP BY `usr_users`.`usr_id` 

 

Acho melhor te encaminhar pro fórum de MySQL.

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.