我正在尝试进行sql搜索查询,以仅返回与我的搜索关键字匹配的订单。问题是,我还需要在每个评论体中搜索每个顺序,如果在该评论中找到结果,则应选择该评论的顺序。这些表以简化的方式显示如下:
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
所以如果我搜索“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';
2条答案
按热度按时间q3qa4bjr1#
根据你的概念,我在phpmyadmin中创建了3个演示表,这里有描述。
1.订单有列(id,title)。
2.comment\u关系有列(id、comment\u id、target\u id、type)。
3.注解有列(id,body)。
这是一个sql查询,用于从comments表中的order by match关键字获取记录。
通过在关键字处替换关键字来应用此查询时,您将得到此结果。
这里我匹配关键字“第一条评论”
mkshixfv2#
不确定您使用的是哪个数据库,但在大多数数据库中,您可以使用表别名后跟*来仅选择一个表。