php - MySQL选择查询内部连接表,有2个针对不同表的正则表达式

标签 php mysql regex mysqli

我正在使用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 tables在这里玩post_sipost_review

我希望上面的内容能给我评论总数+帖子的详细信息。但我在 WHERE 中遇到问题区域,因为有些帖子没有任何评论,因此 AND post_review.review_status = 'a' 导致了一些问题。

我认为我真正需要的是使用条件语句,但我还没有在 mysql if no reviews its ok just get the details of the post and move on to the next post 中尝试过。我怎么做?谢谢!

最佳答案

您需要使用LEFT JOIN来获取没有匹配评论的帖子。您还需要适当的加入条件,将帖子与其评论链接起来。还有一个 GROUP BY 子句用于通过邮寄获取计数,否则您会将所有内容汇总到一个结果中。

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;

关于php - MySQL选择查询内部连接表,有2个针对不同表的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20786896/

相关文章:

node.js - 正则表达式将 Markdown 中的文本 URL 转换为链接

php - 如何通过ajax将mysql结果作为jSON传递

php 相当于 coldfusion cfsavecontent

php - 在数据库中插入 header 值时出现 MYSQL 错误

php - 选择具有特定日期格式的 Where 子句?

mysql - 检查所有行都相同

php - 使用两列将两个 SQL 表相互连接

javascript - 从字符串中获取整数

java - 将 XML 或 HTML 转换为 Wiki 标记 - 您会选择什么方法?

php - 验证新西兰电话号码的正则表达式