首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从故事中选择story.uid等于uid或story.uid等于friend.uid或friend.fid并接受的项目

从故事中选择story.uid等于uid或story.uid等于friend.uid或friend.fid并接受的项目
EN

Stack Overflow用户
提问于 2013-01-16 07:56:18
回答 1查看 87关注 0票数 1

如果满足条件,如何只获取特定的记录?

我的代码是

代码语言:javascript
复制
"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 (用户),则显示表中的文本(意味着这是他自己的故事)
  • 如果表故事中的uid等于表中的uid,并且它的友谊被接受,如果表中的uid等于表中的fid E 222,并且其友谊被接受,则在表<中显示文本<代码>e 123故事<代码>e 224(意思是该故事来自朋友,只有在友谊被接受时才显示出来)
  • 如果根本没有友谊,只需显示自己的故事从表的故事和省略其他
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-16 08:09:51

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

代码语言:javascript
复制
    SELECT field_name 
    FROM table1 t1 
    INNER JOIN table2 t2 
    ON t1.id = t2.some_id 
    WHERE..

您可以检查基本的这里

在您的情况下,您应该按以下方式编写查询:

代码语言:javascript
复制
    "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";

我想这会有帮助的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14353647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档