1

こんにちは、別のテーブルから日付を選択する際に問題があります。基本的に私は次のようなテーブルを持っています

 1) users table, 
 2)follow table, 
 3) photos table, etc. 

写真から日付を選択しようとしていますが、うまくいきません。これが私のmysqlクエリです。ここでは、フォロワーが user_idであるフォロー テーブルからフォロワーを選択しています。

follower_photo.php

$the_user = mysql_query("SELECT * FROM users WHERE username = '$getuser'"); 
$tuser=mysql_fetch_array($the_user); 
$isuser = mysql_num_rows($the_user); 

$tu_id = $tuser['id']; 
////users whos following Me 
$followers = mysql_query("SELECT * FROM follow WHERE followers ='$tu_id' order by id desc"); 
$f_s_count = mysql_num_rows($followers); 

ここでは、日付と次の id に基づいて写真を取得しています。

index.php

include('func/followers_photos.php');
       if($f_s_count > '0')
           { 
        while($uim = mysql_fetch_assoc($followers)){ 
        $i_id = $uim['following']; 
           $followers_image = mysql_query("SELECT * FROM photos WHERE user_id = '$i_id' order by date"); 
        $disimg = $fimage['img'];
        $disid = $fimage['id'];
        $distime = $fimage['date'];
        $i_like=$fimage['likes'];
        //$i_unlike=$fimage['down'];
        $likes_ip = mysql_query("SELECT * FROM voting_ip  WHERE mes_id_fk = '$disid'");
        $ipadd = mysql_fetch_assoc($likes_ip);
        $check_likes= $ipadd['mes_id_fk'];
        $user_follow_details = mysql_query("SELECT * FROM users WHERE id = '$i_id'");
        $ufde = mysql_fetch_assoc($user_follow_details);
        $uiname = $ufde['username'];
        $uinim = $ufde['img'];
        $ip=$_SERVER['REMOTE_ADDR']; 

終了括弧は html コードの後に​​あります。

上記のコードは機能しますが、ID に基づいてテーブルからデータを選択しているため、日付に基づいて写真を並べ替えることができません。

これが私がこれまでに試したことです。

$the_user = mysql_query("SELECT * FROM users WHERE username = '$getuser'"); 
$tuser=mysql_fetch_array($the_user); 
$isuser = mysql_num_rows($the_user); 

$tu_id = $tuser['id']; 
////users whos following Me 
$followers = mysql_query("SELECT * FROM follow,photos WHERE followers = photos.user_id order by photos.date desc"); 
$f_s_count = mysql_num_rows($followers); 

上記のコードは機能しますが、次の ID からではなく、データベースからすべての写真を選択します。つまり、フォローしていないユーザーの写真も表示されるということです。

私が達成しようとしているのは、私がフォローしている人から選択し、写真テーブルに保存されている写真の日付で写真を並べ替えることです。私は本当に立ち往生しています、誰かが私を助けることができますか? あなたの返信は大歓迎です。私の悪い英語でごめんなさい。

編集

今、これは私が望むように機能しますが、画像を複数回表示します。

$followers = mysql_query("SELECT * FROM follow,photos WHERE photos.user_id = '$tu_id' and follow.followers = photos.user_id order by photos.date desc");

別の編集

これで画像が複数回表示されることはありませんが、新しい画像を投稿するたびに、IDに基づいて並べ替えられます。@GonGordon Linoffの提案を少し修正

SELECT distinct follow.*
FROM photos join
     follow
     on  follow.followers = photos.user_id
WHERE    photos.user_id = $tu_id
order by photos.date desc;
4

2 に答える 2

0

このようなことを試しましたか?

$followers = mysql_query("SELECT * FROM follow, photos 
WHERE follow.followers = photos.user_id and photos.user_id = '$i_id' 
order by photos.date desc"); 
于 2013-08-07T12:14:08.587 に答える
0

最後のクエリは正しい軌道に乗っています。次のユーザーの条件を追加するだけです。

SELECT * 
FROM follow join
     photos
     on follow.followers = photos.user_id
WHERE photos.user_id = $the_user
order by photos.date desc;

編集:

特定のユーザーがフォローしているすべての写真を取得したい場合は、ロジックを逆に実行しました。

SELECT distinct photos.*
FROM follow join
     photos
     on follow.followers = photos.user_id
WHERE follow.user_id = $the_user
order by photos.date desc;
于 2013-08-07T12:14:16.460 に答える