1

フレンドシップ システム データベースの作成に小さな問題があります。今、私は友人と呼ばれるテーブルを持っています:

テーブル フレンド:

    you      friend      approve     since
_________________________________________________
   wetube    youtube     1           4-12-2012
   facebook  wetube      1           4-12-2012

そして、wetubeというユーザーの友達を取得するためのこのクエリコードがあります。

mysql_query("SELECT f.* FROM friends f inner join users u on u.username =
f.you WHERE f.friend = 'wetube' UNION ALL SELECT f.* FROM friends f inner join users u on
u.username = f.friend WHERE f.you = 'wetube'");

今、私が正確に望んでいるのは、wetube の友達を取得して、彼のページでそれを表示する方法です。

修繕:

最後に、問題を修正しました。これはテーブルです:

CREATE TABLE IF NOT EXISTS `friends` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `you` varchar(255) NOT NULL,
  `friend` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL,
  `since` date NOT NULL,
  `message` text NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

これは、ユーザーの友達を取得するためのphpコードです

<?php
$username = $_SESSION['username'];
$friends_sql = mysql_query("SELECT * FROM friends WHERE (friend = '$username' OR you = '$username') ");
while($friends_row = mysql_fetch_assoc($friends_sql)){
if ($username == $friends_row['you']) {
echo $friends_row['friend']."<br/>";
} elseif($username == $friends_row['friend']) {
echo $friends_row['you']."<br/>";
}
}
?>

自分で試してみてください 100% うまくいきます

4

5 に答える 5

1

[friend] 列に wetube がある行だけということですか? 結合について考えすぎているだけかもしれません。

SELECT * FROM [friends] WHERE [friend] = 'wetube'

wetube がどちらかの列にある場合:

SELECT * FROM [friends] WHERE [friend] = 'wetube' OR [you] = 'wetube'

または:

SELECT * FROM [friends] WHERE [friend] = 'wetube'
UNION ALL
SELECT * FROM [friends] WHERE [you] = 'wetube'
于 2012-04-12T17:38:45.310 に答える