首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgres tsvector与关系表

Postgres tsvector与关系表
EN

Stack Overflow用户
提问于 2017-05-31 20:50:21
回答 0查看 260关注 0票数 1

我有两张简单的桌子。首先是品牌,每个品牌可能都有一个顶级品牌。例如,Elseve有一个顶级品牌,那就是Loreal Paris。但雅芳没有顶级品牌。我有一个简单的products表。

这是sqlfiddle

这是品牌表。

代码语言:javascript
复制
 id |     name     | parent_id | depth
----+--------------+-----------+-------
  3 | Loreal Paris |     null  |     0
  1 | Avon         |     null  |     1
  2 | Elseve       |      3    |     1
(3 rows)

这是products表

代码语言:javascript
复制
 id | brand_id |   name
----+----------+-----------
  1 |        1 | Product 1
  2 |        2 | Product 2
(2 rows)

当我尝试获取tsvectors时,Product 1文档返回空结果。但我至少要在文件里写上雅芳。

代码语言:javascript
复制
 product_id | product_name |                     document
------------+--------------+--------------------------------------------------
          1 | Product 1    |
          2 | Product 2    | '2':2 'elsev':3 'loreal':4 'paris':5 'product':1
(2 rows)

如何解决这个问题?

感谢美国之音的Tsun。我稍微更新了一下查询。我不再需要分组了。

代码语言:javascript
复制
select
  products.id as product_id,
  products.name as product_name,
  to_tsvector(products.name) ||
  to_tsvector(brands.name) ||
  to_tsvector(top_brands.name)
    as document
from products
  JOIN brands on brands.id = products.brand_id
  LEFT JOIN brands as top_brands on coalesce(brands.parent_id,brands.id) = top_brands.id;
EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44285327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档