2017-01-26 30 views
0

私は私のmysqlクエリコードの助けを必要としています!私は3つのデータベースを持っており、私は3つすべてのデータを投稿する方法を見つけようとしています。1つのmysqlクエリで3つのテーブル?

users 
 
---------------------------------- 
 
user_id username  email..etc 
 
----------------------------------- 
 
1   username 
 
----------------------------------- 
 

 

 
friends_db 
 
------------------------------------- 
 
user_id friend_id friend_active 
 
-------------------------------------- 
 
    1   2    1 
 
-------------------------------------- 
 

 

 
posts 
 
------------------------------------- 
 
post_id user_id  post_content 
 
------------------------------------- 
 
1   1    this is a post 
 
--------------------------------------

私は何をしたいの友人はあなたの友人(friend_activeに1を持っている人)が行っているすべての記事を見ることができるリストを掲載しますです。

私の機能:

function getFriendsPosts() 
{ 

    require "config.php"; 

    $friends = $c->query ("SELECT * FROM friends_db WHERE user_id=" . $_SESSION["user_id"] ." AND friend_active = 1") ; 

    if ($friends->num_rows > 0) 
    { 

     while($row = $friends->fetch_assoc()) 
     { 
      $postData[] = array("user_id" => $row[ "user_id" ], "friend_active" => $row[ "friend_active" ], "friend_id" => $row[ "friend_id" ]); 
     } 
    } else { 
     echo "No Data To Show"; 
    } 

    return $postData; 

} 

私が持っている:私は持っている人のUSER_IDを与える

$friends = $c->query ("SELECT * FROM friends_db WHERE user_id=" . $_SESSION["user_id"] ." AND friend_active = 1") ; 

friend_active =私がすることによってこれを拡大する方法がわからないしかし1

friend_idを自分のuser_idに関連付けることで、自分のユーザー名を取得し、そこに投稿を表示することもできます。

私はこれを過度に複雑にしているかもしれないし、そうでないかもしれない、わからない。 私はこれを私がすでに行っているのと同じフォーマットで(私はこのフォーマットで作業している他のものも持っていますが、私もこれも必要です)これを行う方法を知っていますか?またはいくつかのアドバイスがありますか?

編集:

$friends = getFriendsPosts(); 

foreach ($friends as $friend) { 
    ?> 
    <div class="ui-corner-all custom-corners"> 
    <div id="searchpost"> 
    <?php 


    echo $friend['user_id']; 
    echo $friend['friend_id']; 
    echo $friend['friend_active']; 


    ?> 
    </div> 
    </div> 
    <?php 
} 
?> 

のようなイド:

は(USER_IDとの関係で)ユーザ名(関係で/ thier自身のユーザーIDをfriend_idする) エコーポストデータをエコー

答えて

1

私はfriends_dbクエリの一部が実際にfriendsテーブルであると仮定していますか?また、これらのテーブル間に関係があると仮定しています:

もしそうなら、あなたが参加使用することができます。

また
select * from friends as f 
join users as u on u.user_id = f.user_id 
join posts as p on p.user_id = f.user_id 
where f.user_id = ... 

、友達のPOSTを取得するには:

select * from posts as p 
join users as u on u.user_id = p.user_id //gets users table where related to posts 
join friends as f on f.user_id = p.user_id //gets friends where related 
join users as fu on fu.user_id = f.friend_id //gets users table where related to friend user_id 
where u.user_id = ....//the sources user_id 
+0

エイを、私は、ユーザーによって行われた(記事データベース内)の記事を表示しようとしていますあなたの友人であるあなたの友人であるあなたの友人であるあなたの友人のデータベース(ユーザーのデータベース)にアクセスします。私は友達のデータベースにユーザー名を入れてアクセスする2つのテーブルに絞り込むことができますが、あなたが私に説明したコードにあまり慣れていないので、投稿データベース用に追加することができますか?ありがとうございました:) –

+0

編集を参照してください。これは、後見のなかであいまいな質問のようなものです。特定のIDの友人によって投稿が投稿されましたか? – Kisaragi

+0

投稿するインデックスに編集したものを使用します。 :) –

関連する問題