Показывать мини-блоги только от меня и друзей - PullRequest
1 голос
/ 11 сентября 2010

Я пытаюсь сделать запрос MySQL, который будет отображать мини-блоги от Меня и Моих друзей.Так же, как Twitter.

Вот мои таблицы;

--members
m_id INT
m_user VARCHAR
(rest are other member info)

--shouts
s_id INT
s_userid INT
s_content TEXT
s_posted DATETIME

--friends
f_userid INT
f_friendid INT
f_status INT // 0=pending, 1=approved
f_create DATETIME
f_update DATETIME

Примечание: есть 2 записи для 1 дружбы

ex: f_userid = ME, f_friendid = MYFRIEND и являетсяи наоборот

f_userid = MYFRIEND, f_friendid = ME

Код, который работает, но не использует таблицу списков друзей,

SELECT * FROM shouts 
JOIN members 
ON members.m_id = shouts.s_uid 
ORDER BY s_posted DESC

не может добавить винформация о таблице друзей.

Я полагаю, что мне не хватает одной строки кода или 2 ...

Я пробовал это, но не смог.

SELECT * FROM shouts 
JOIN members 
ON members.m_id = shouts.s_uid 
JOIN friends
ON friends.f_friendid = members.m_id
WHERE m_id = 1 //my id
AND f_userid = 1 //my id
AND f_status = 1
ORDER BY s_posted DESC

1 Ответ

0 голосов
/ 14 сентября 2010
// GET LIST OF FRIEND ID's FIRST
    $sfflsql = mysql_query("SELECT f_friendid FROM friends 
                        WHERE f_userid = ".intval($_SESSION['lalala']['m_id'])." 
                        AND f_status = 1 
                        ORDER BY f_friendid");
    // CONVERT ARRAY INTO STRING EX: 1,2,3,4
    $sfflrs = "";
    while($s1 = mysql_fetch_assoc($sfflsql))
    {
        $sfflrs .= implode(",",$s1).",";
    }
    $sfflrs = substr($sfflrs,0,-1); // REMOVES LAST COMMA ,

    $feedsql = mysql_query("SELECT * FROM shouts 
                           INNER JOIN dbbbl_members 
                           ON members.m_id = shouts.s_uid 
                WHERE m_id IN (".$_SESSION['lalala']['m_id'].",".$sfflrs.")
                           ORDER BY s_posted DESC 
                           LIMIT 15");

Это работает, но не уверен, что это правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...