【问题标题】:if statement in a query?查询中的 if 语句?
【发布时间】:2012-09-07 17:25:02
【问题描述】:

我的数据库中有 3 个表:

用户:

id  ------- username
1            user1  
2            user2

作家

id  ------- name
4           writer4
5           writer5 
8           writer8

以下:

user_id  -----  follow  
1               5
1               8
2               5

所以,现在 User1 跟随 writer5 和 writer8 ,而 user2 跟随 writer5

我以 user1 身份登录我的应用程序,当我进入作者页面时,我会得到数据库中所有作者的列表.. 我只是想在每个作家面前表明我是否关注这个作家..

列出作家页面示例:

writer4     :follow
writer5     :unfollow (i'm following him now)
writer8     :unfollow (i'm following him now)
writer100     :follow 

我的问题是:如果我没有(作为用户 1)关注此作者,是否有查询来获取作者的完整列表并给我一个 value=0

有什么想法吗? 谢谢..

【问题讨论】:

  • 可以使用pl/sql进行调理
  • 任何想法我该怎么做?谢谢..

标签: php mysql sql


【解决方案1】:
SELECT
 writers.username,
 IFNULL(following.user_id,0) AS isFollowing
FROM
 writers
 LEFT JOIN following ON writers.id = following.follow

然后在 php 中您可以检查 $results['isFollowing'] 是 true (>=1) 还是 false (0) 并显示您需要的内容。

【讨论】:

  • 你的解决方案比我的更优雅一点,布尔结果等等:)
  • @Ahmad 这只会返回某个用户正在关注的行。 see this link.
  • @Ahmad - 为了我的“声誉”,John 是对的 - 你会想在他的例子中使用交叉连接。
【解决方案2】:

您需要使用CROSS JOIN 才能让用户获取所有作者。

SELECT b.name,if(c.userid is null, 'follow', 'unfollow') result
FROM users a
        CROSS JOIN writers b
        LEFT JOIN following c
          on a.id = c.userid AND
             b.id = c.follows
WHERE a.id = 1

SQLFiddle Demo

【讨论】:

  • @Ahmad 您接受的答案不会返回您桌子上的所有作者列表,而是只会显示用户一直关注的作者。 see this link
  • Totet ,实际上我得到了我桌子上的所有作者列表,并且还得到了 isFolloing = user_id .. 所以我检查 isFollowing==logged_in_user ,如果是的话,这意味着logged_in_user 跟随这个作家.. 我现在会再次检查以确保,非常感谢约翰..
  • 现在我在我的 foreach 循环中创建了一个 if 条件语句来查看logged_in_user 是否跟随作者,你的代码呢?
  • 您在 sqlfiddle 上看到示例了吗?通过使用它,您将不会在您的 php 文件中使用 IF 语句。
  • 你是对的,我回来使用你的代码;)因为我只知道如何连接来自 2 个不同数据库的 2 个表 .. 再次感谢 ..
【解决方案3】:

我建议你在你的用户 ID 键上加入以下作者:

select w.*, f.user_id from writers w
left outer join following f on f.follow = w.id 
and f.user_id = <INSERT USER ID HERE>

这应该会返回所有作者的列表,并且会为您关注的作者显示您的用户 ID,对于您不关注的作者显示 null。然后,您将以此为基础进行关注/取消关注。

【讨论】:

    【解决方案4】:

    PL/SQL 支持条件语句、迭代语句等编程语言特性。

    编程结构类似于您在 Java 和 C++ 等编程语言中使用的方式。在本节中,我将为您提供如何在 PL/SQL 编程中使用条件语句的语法。

    IF condition 
    
    THEN 
    
     statement 1; 
    
    ELSE 
    
     statement 2; 
    
    END IF;
    

    for further reference check this link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-13
      • 1970-01-01
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 2022-06-20
      相关资源
      最近更新 更多