如何检查连接表中是否存在行 - MySQL

时间:2012-03-02 11:28:27

标签: php mysql

我担心我对MySQL很新手。我已经做了很多阅读试图解决这个问题,但由于某些原因无法使其发挥作用。

希望你们其中一个人可以帮助一见钟情,应该很简单

我有一个选择评论列表的查询。

$commentquery = "select projects_comments.*, users.user_url, users.display_name
from ".$wpdb->prefix."projects_comments projects_comments
left join ".$wpdb->prefix."users users on   
users.ID=projects_comments.userid           
where projectid = '$projectid'
order by projects_comments.commentid desc"; 

用户可以'喜欢/喜欢'这些评论(想想facebook)

我希望能够检查登录用户是否喜欢/喜欢此查询返回的每条评论。

第三个表('comment_loves'未在上面的查询中显示)包含commentid,userid,posttime,并且可以通过变量$ userid访问登录的用户ID。需要针对查询的每个返回行检查第三个表。

总而言之,基本上我需要在此查询中添加以下功能:

对于每个返回的行,必须检查".$wpdb->prefix." comments_loves表是否存在行WHERE userid = $userid AND commentid = commentid。如果它存在,那么它将'true'或'1'返回到名为loves的另一列。

我希望这很清楚,如果这对你们很多人来说这是一个简单的问题我会道歉。尽管我尝试过,但我还是无法做到这一点。

谢谢

3 个答案:

答案 0 :(得分:2)

现在无法测试,但这样的事情应该有效;添加了另一个左连接以检查您的状况;

SELECT projects_comments.*, 
       users.user_url,
       users.display_name, 
       comments_loves.userid IS NOT NULL AS loves
FROM projects_comments projects_comments
LEFT JOIN users users 
  ON users.ID=projects_comments.userid  
LEFT JOIN comments_loves
  ON projects_comments.commentid = comments_loves.commentid AND 
     comments_loves.userid = '$userid'
WHERE projectid = '$projectid'
ORDER BY projects_comments.commentid DESC

答案 1 :(得分:1)

这只是你爱情表的外部联接

这样的东西
select projects_comments.*, users.user_url, users.display_name,
case when comment_loves.commentid is null then 0 else 1 end as loves
from ".$wpdb->prefix."projects_comments projects_comments
left join ".$wpdb->prefix."users users on users.ID=projects_comments.userid
outer join ".$wpdb->prefix."comment_loves 
on comment_loves.commentid = projects_comments.commentid
and comment_loves.userid = projects_comments.userid
where projectid = '$projectid'
order by projects_comments.commentid desc 

答案 2 :(得分:0)

使用mysql_num_rows检查返回的行数,例如

$DBresult = mysql_query($yourQuery, $dbLink);
$rowCount = mysql_num_rows($DBresult);

if($rowCount > 0)
{
    //do stuff
}