如何在MySQL查询中添加对数据的检查?

如何在MySQL查询中添加对数据的检查?,mysql,Mysql,我有三张桌子: $sTable=歌曲表(songid、mp3link、artwork、useruploadid等) $sTable2=项目表,其中包含链接到它们的歌曲(projectid、songid、项目名称等) $sTable3=歌曲分级表(songid、userid、分级) 所有这些数据都被输出到一个JSON数组中,并显示在我的应用程序中的一个表中,以提供歌曲列表,以及项目和评级数据 我希望能够做的是检查“登录用户”是否对特定歌曲进行了投票,以便我可以向返回数据的父元素添加“投票”类

我有三张桌子:

  • $sTable
    =歌曲表(songid、mp3link、artwork、useruploadid等)
  • $sTable2
    =项目表,其中包含链接到它们的歌曲(projectid、songid、项目名称等)
  • $sTable3
    =歌曲分级表(songid、userid、分级)
所有这些数据都被输出到一个
JSON
数组中,并显示在我的应用程序中的一个表中,以提供歌曲列表,以及项目和评级数据

我希望能够做的是检查“登录用户”是否对特定歌曲进行了投票,以便我可以向返回数据的父元素添加“投票”类

我想用一种最持久的最佳方式来实现这一点,我猜是返回一个布尔值(1或0),1被投票,0被返回

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

“登录用户id”作为$loggedin_id存储在我的PHP脚本中,因此我需要简单地针对给定songid的$sTable3列检查此变量,并返回一个新列(我可以想象使用as),如果该songid有匹配项,则结果为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

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

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

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

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,很好,我已经成功了。它只是花了一些玩表别名和其他一些小更正。除此之外,你的回答非常有效。谢谢。:)感谢MGA,这看起来是正确的方法,但我很难将其集成到查询中,而不会出现别名/语法错误。可能是因为我对MySQL相对缺乏经验。正如我不想问的那样,您是否介意更具体一点,如何将其与我当前的查询集成?这对像我这样的新手来说是非常有帮助的。再加一点拨弄,我就到了那里。。。在这个过程中,我学到了一两件事。非常感谢一如既往的MGA。你是个明星。:-)@gordyr,我真的很抱歉,但实际上我无法得到,你想把它集成到什么中???您在问题中发布的问题我不理解,但如果您能更具体一些,我将很乐意提供帮助。谢谢MGA,很好,我已经成功了。它只是花了一些玩表别名和其他一些小更正。除此之外,你的回答非常有效。谢谢。:)