Php MySQL select查询内部联接表,其中2个regexp针对不同的表

Php MySQL select查询内部联接表,其中2个regexp针对不同的表,php,mysql,regex,mysqli,Php,Mysql,Regex,Mysqli,Im使用PHP MySQLi为查询准备的语句 $stmt = $dbconnect->prepare(" SELECT COUNT(r.review_id) , p.postid , p.title , p.tags , p.ltags , p.status , p.timestamp FROM njdb.post_review r JOIN nj

Im使用
PHP MySQLi
为查询准备的语句

$stmt = $dbconnect->prepare("

    SELECT COUNT(r.review_id)
         , p.postid
         , p.title
         , p.tags
         , p.ltags
         , p.status
         , p.timestamp 
      FROM njdb.post_review r
      JOIN njdb.post_si p
     WHERE r.postid REGEXP ? 
       AND r.review_status = 'a' 
       AND p.postid REGEXP ? 
       AND p.status = 'a';

   ");
$stmt->bind_param('ss',$search,$search);
$stmt->execute();
$stmt->bind_result($result_post_review, $result_postid, $result_title, $result_hashtags, $result_location, $result_status, $result_timestamp);
$search
是一个字符串,其值类似于
id1 | id2 | id3 | id4

这里有
2个表
post\u si
post\u review

我希望上面能给我评论的总数+帖子的细节。但是我在
WHERE
区域遇到了问题,因为一些帖子没有任何评论,所以
和post\u review.review\u status='a'
导致了一些问题


我想我真正需要的是使用条件语句,但我还没有在mysql中尝试过,如果没有评论就可以了,只需获取文章的详细信息并继续下一篇文章我该怎么做?谢谢

你需要使用
左连接
来获取没有匹配评论的帖子。你还需要一个合适的加入条件,把帖子和评论联系起来。还有一个
GROUP BY
子句,用于通过post获取计数,否则将在一个结果中合计所有内容

SELECT COUNT(r.review_id)
     , p.postid
     , p.title
     , p.tags
     , p.ltags
     , p.status
     , p.timestamp 
  FROM njdb.post_si p
  LEFT JOIN njdb.post_review r ON r.postid = p.postid AND r.review_status = 'a'
 WHERE p.postid REGEXP ? 
   AND p.status = 'a'
 GROUP BY p.postid;

您说的是“内部联接”,但实际上这是交叉联接,因为您没有指定表之间的任何关系。您需要使用
左联接。