2

データベースから一連の ID を取得しています。ID ごとに、mysql クエリを実行して、別のテーブルの関連する行を取得したいと考えています。ログインしたユーザーの同様のデータも取得する必要がありますが、これは正常に機能します。私が使用しているmysqlクエリでは、最初にプルされたIDの数に応じて、ログインしたユーザーデータが複製されます。私が望むものではありませんが、これは理にかなっています。ログインしたユーザーのデータを重複させたくないので、タイムスタンプを使用して注文できるように、データを 1 つのクエリから取得する必要があります。

<?php
    mysql_select_db($database_runner, $runner);
    $query_friends_status = "SELECT DISTINCT rel2 FROM friends WHERE rel1 = '" . $_SESSION    ['logged_in_user'] . "'";
    $friends_status = mysql_query($query_friends_status, $runner) or die(mysql_error());
    $totalRows_friends_status = mysql_num_rows($friends_status);

    while($row_friends_status = mysql_fetch_assoc($friends_status))
    {
        $friends_id = $row_friends_status['rel2'];
        mysql_select_db($database_runner, $runner);
        $query_activity = "SELECT * FROM activity WHERE user_id = '$friends_id' OR user_id = '" .  $_SESSION['logged_in_user'] . "' ORDER BY `timestamp` DESC LIMIT 15";
        $activity = mysql_query($query_activity, $runner) or die(mysql_error());
        $totalRows_activity = mysql_num_rows($activity);
        echo "stuff here";
    }
?>
4

3 に答える 3

1

この単一のクエリを試して、必要なことを実行できるかどうかを確認できます

$userID = $_SESSION['logged_in_user'];
"SELECT * FROM activity WHERE user_id IN (
    SELECT DISTINCT rel2 FROM friends 
    WHERE rel1 = '$userID')
OR user_id = '$userID' ORDER BY `timestamp` DESC LIMIT 15";
于 2012-06-12T16:24:21.537 に答える
0

おそらく次のようなものが必要です。

  $user = $_SESSION['logged_in_user'];
  $query_friends_status = "SELECT * FROM friends, activity WHERE activity.user_id = friends.rel2 AND rel1 = '$user' ORDER BY `timestamp` DESC LIMIT 15";

* を必要なフィールドに置き換えることができますが、次のようにフィールド名の前にテーブル名を付けることを忘れないでください。

テーブル名.フィールド名

これが役立つことを願っています。

于 2012-06-12T16:24:34.203 に答える