我有三张桌子:
$sTable
=一张歌曲表(songid,mp3link,artwork,useruploadid等)$sTable2
=与他们相关的歌曲项目表(项目名称,项目名称等)。$sTable3
=歌曲评分表(songid,userid,rating)所有这些数据都输出到JSON
数组并显示在我的应用程序的表格中,以提供歌曲列表,并结合项目和评级数据。
我想要做的是检查“登录用户”是否已对特定歌曲投票,以便我可以将“投票”类添加到返回数据的父元素中。
我希望以最佳性能最佳方式执行此操作,我猜这将返回一个布尔值(1或0),其中1表示已投票,0表示返回。
然后我可以使用javascript来应用类客户端。
'登录用户ID'作为$ loggedin_ID存储在我的PHP脚本中,因此我需要针对给定的songid,针对$ sTable3的'userid'列检查此变量,并返回一个新列(我会想象使用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
答案 0 :(得分: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