我正在尝试进行sql搜索查询,以仅返回与我的搜索关键字匹配的ORDERS。问题是我还需要在每个评论正文中搜索每个顺序,如果在该评论中找到了结果,则应该选择该评论的顺序。这些表以简化的方式看起来像这样:

ORDERS:

ID = 95
title = first order


COMMENT RELATIONS:
id = 1241
comment_id = 500
target_id = 95
type = order

COMMENTS:
id = 500
body = this is the first comment


因此,如果我搜索“第一条评论”,则应选择ID为95的订单。

我当前的尝试似乎是选择更多顺序,然后再选择它们的评论和关系?这就是我目前的尝试。

$query = 'SELECT DISTINCT *
FROM orders as o
LEFT JOIN comment_relations as cr ON o.id = target_id
LEFT JOIN comments as c ON cr.comment_id = c.id
WHERE o.id LIKE :keyword OR o.title LIKE :keyword OR c.body LIKE :keyword';

最佳答案

不确定使用的是哪个数据库,但是在大多数数据库中,可以使用表别名,后跟*以仅选择一个表。

'SELECT DISTINCT o.*
FROM orders as o
LEFT OUTER JOIN comment_relations as cr ON o.id = target_id
LEFT OUTER JOIN comments as c ON cr.comment_id = c.id
WHERE o.id LIKE :keyword OR o.title LIKE :keyword OR c.body LIKE :keyword';

关于php - 关系表中的SQL搜索查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51652958/

10-12 00:02
查看更多