【问题标题】:How to add check against data within a MySQL query?如何在 MySQL 查询中添加对数据的检查?
【发布时间】:2011-11-29 10:28:38
【问题描述】:

我有三张桌子:

  • $sTable = 歌曲表(songid、mp3link、艺术品、useruploadid 等)
  • $sTable2 = 项目表,其中包含链接的歌曲(项目 ID、歌曲 ID、项目名称等)
  • $sTable3 = 歌曲评分表(歌曲 ID、用户 ID、评分)

所有这些数据都输出到 JSON 数组并显示在我的应用程序的表格中,以提供歌曲列表,并结合项目和收视率数据。

我想要做的是检查“登录用户”是否对特定歌曲进行了投票,以便我可以将“投票”类添加到返回数据的父元素。

我希望以最持久的最佳方式执行此操作,我猜这将是返回一个布尔值(1 或 0),其中 1 被投票,否则返回 0。

然后我可以使用 javascript 来应用类客户端。

“登录的用户 ID”作为 $loggedin_ID 存储在我的 PHP 脚本中,因此我需要简单地对照 $sTable3 的“用户 ID”列检查该变量以获取给定的歌曲 ID 并返回一个新列(我想使用AS) 如果该歌曲有匹配的条目,则结果为 1,如果没有,则结果为 0。

我将如何修改我的查询以添加它?

以上只是我的想法,可能确实有更好/更有效的方法。如果是这样,请不要犹豫,提供您认为可能是实现此功能的更好解决方案。

以下是我当前的查询。谢谢。

$sQuery = "SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
           FROM $sTable b 
           LEFT JOIN (
                       SELECT COUNT(*) AS projects_count, a.songs_id
                       FROM $sTable2 a
                       GROUP BY a.songs_id
                      ) bb ON bb.songs_id = b.songsID

           LEFT JOIN (
                       SELECT AVG(rating) AS rating, COUNT(rating) AS ratings_count,c.songid
                       FROM $sTable3 c
                       GROUP BY c.songid
                     ) bbb ON bbb.songid = b.songsID

【问题讨论】:

    标签: mysql


    【解决方案1】:

    也许你正在寻找这样的东西:

    select s.songid, s.userid, 
       case when exists 
       ( 
           select songid 
           from sTable3 
           where songid = $songid 
       ) Then 'Voted'
       else
       (
           'Not Voted'
       )
       end
       as 'Voted or Not'
    from sTable3 s
    where s.userid = $userid
    

    【讨论】:

    • 感谢 MGA,这看起来是正确的方法,但我无法将其集成到我的查询中而不会出现别名/语法错误。可能是由于我对 MySQL 的相对缺乏经验。就像我不想问的那样,您介意更具体地说明如何将它与我当前的查询集成吗?这对像我这样的新手非常有帮助。
    • 稍微摆弄了一下,我到了那里......并在此过程中学到了一两件事。非常感谢 MGA。你是个明星。 :-)
    • @gordyr,我真的很抱歉,但我实际上无法得到,你想将它集成到什么中???您在问题中发布的查询我无法理解,但如果您能更具体一点,我会很乐意提供帮助。
    • 感谢 MGA,我可以正常工作了。只是花了一些时间来处理表格别名和其他一些小的更正。除此之外,您的回答效果很好。谢谢你。 :)
    猜你喜欢
    • 2015-02-21
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多