1

如果满足条件,我如何才能仅获取特定记录?

我有代码

"SELECT a.id, a.text, a.uid, a.time 
FROM story a INNER JOIN friends b 
         ON ((a.uid = '" . $uid . "') OR 
             (b.uid = '" . $uid . "' AND accepted='1')  OR 
             (b.fid = '" . $uid . "' AND accepted='1')) 
ORDER BY a.time DESC 
LIMIT 3";

它工作正常,只是当friends表为空时,它不会显示story记录。

我想要实现的是

  • 如果表格故事中的uid等于登录的uid(用户),则显示表格故事中的文本(意味着这是他自己的故事)

  • 如果table story中的uid等于table friends中的uid并且它的友谊被接受,或者如果table story中的uid等于table friends中的fid并且它的友谊被接受然后显示table story中的文本(意味着故事来自一个朋友,只有在接受友谊时才会显示)

  • 如果根本没有友谊,就从桌面故事中展示自己的故事而忽略其他人

4

1 回答 1

1

我认为您没有使用正确的连接格式。它应该是:

    SELECT field_name 
    FROM table1 t1 
    INNER JOIN table2 t2 
    ON t1.id = t2.some_id 
    WHERE..

您可以在此处查看基础知识。

在您的情况下,您应该编写如下查询:

    "SELECT a.id, a.text, a.uid, a.time 
    FROM story a INNER JOIN friends b 
    ON a.id = b.some_id WHERE ((a.uid = '" . $uid . "') OR
    (b.uid = '" . $uid . "' AND accepted='1')  OR 
    (b.fid = '" . $uid . "' AND accepted='1')) 
    ORDER BY a.time DESC 
    LIMIT 3";

我认为这会有所帮助。

于 2013-01-16T08:09:51.137 回答