3

2つのテーブルがあります。最初のテーブルは単純なユーザーデータを保持し、列があります

$username, $text, $image 

(これは「USERDATA」と呼ばれます)。

2番目のテーブルには、どのユーザーが他のユーザーを「フォロー」しているかに関する情報が保持されており、列が設定されています。

$username and $usertheyfollow 

(これは「フォロー」と呼ばれます)。

私がする必要があるのは、データを各ユーザーに個別に表示して、ユーザーに関連するようにすることです。$textつまり、たとえばuserABCは、フォローしているすべてのユーザーのと$image入力を表示できる必要があります。これを行うには、最初にログインしたユーザー(この場合はuserABC)を確認し、次に$usertheyfollow対応する値を持つテーブルFOLLOWSのすべてのインスタンスを選択して"userABC." から戻る必要があるSQLクエリを作成する必要があると思います。私のUSERDATAテーブルに移動して選択する$text$image、対応する値は。になり$usertheyfollowます。次に、echoコマンドなどを使用してこれを表示できます...

このSQLクエリをどのように記述しますか?そして、私はデータベースアーキテクチャについて正しい方法でさえ行っていますか?

4

3 に答える 3

2

そのようなテーブルで:

userdataテーブル

 ______________________________
| id | username | text | image |
|------------------------------|
| 1  | jam      | text | image |
+------------------------------+
| 2  | sarah    | text | image |
+------------------------------+
| 3  | tom      | text | image |
+------------------------------+

followsテーブル

 _____________________
| userId | userFollow |
|---------------------|
|   1    |     2      |
+---------------------+
|   1    |     3      |
+---------------------+

次のSQLを使用します。

SELECT userdata.text, userdata.image FROM follows LEFT JOIN userdata ON follows.userFollow = userdata.id WHERE follows.userId = 1

ID「1」のユーザーがフォローするすべてのテキストと画像を取得します

于 2012-05-02T16:18:27.137 に答える
1

結局のところ、これらの答えはどちらも正しくありませんでした。@jam6459が最も近かった。

正解は次のとおりです。

SELECT userdata.text, userdata.image, follows.userFollow
  FROM userdata
  LEFT JOIN follows ON follows.userFollow = userdata.username
  WHERE follows.userId = $username

また、jamの表の例のように、IDに対応するユーザー名を持たない方が簡単であることがわかりました。これは、同じユーザーが「USERDATA」に複数のエントリを持つことができるためです。代わりに、IDとしてユーザー名を使用しました。

于 2012-05-03T00:56:42.407 に答える
-1
function get_text_image($username)
{
     $sql = "SELECT * FROM USERDATA where username='".$username."'";  
     $result = mysql_query($sql);

     while($row = mysql_fetch_array($result))
     {
         echo $row['text'];
         echo $row['image'];
     }
}



function display_data_of_followers($userid)
{
     $sql = "SELECT usertheyfollow FROM follow WHERE userid = ".$userid."";
     $result = mysql_query($sql);

     while($row = mysql_fetch_array($result))
     {
          get_text_image($row['usertheyfollow']);
     }
}

display_data_of_followers($userid);
于 2012-05-02T16:34:18.623 に答える