Postgresql 如何在由链接表链接的多个表上执行文本搜索?
我有三张桌子: 图像Postgresql 如何在由链接表链接的多个表上执行文本搜索?,postgresql,join,Postgresql,Join,我有三张桌子: 图像 "id" int4 NOT NULL DEFAULT nextval('images_id_seq'::regclass), "created_at" timestamp NOT NULL, "updated_at" timestamp NOT NULL, "thumbnail_url" varchar(128), "web_url" varchar(128), "large_url" varchar(128), "titlelong" varchar(255) NOT N
"id" int4 NOT NULL DEFAULT nextval('images_id_seq'::regclass),
"created_at" timestamp NOT NULL,
"updated_at" timestamp NOT NULL,
"thumbnail_url" varchar(128),
"web_url" varchar(128),
"large_url" varchar(128),
"titlelong" varchar(255) NOT NULL,
"titleshort" varchar(255) NOT NULL
标签
图像标签
"tag_id" int4 NOT NULL,
"image_id" int4 NOT NULL,
我需要做一个搜索,从标签中查找图像字段和标签字段,但将标签链接到图像,但不链接到图像标签表。我不是一个SQL高手,但正在努力变得更好。在标准SQL中:
SELECT
*
FROM
image_tags r
JOIN tags t ON t.id = r.tag_id
JOIN images i ON i.id = r.image_id
WHERE
-- What ever you like to search for
和我们在这里讨论的PostgreSQL时,您可以考虑重命名<代码>图像。ID <代码> > <代码>图像。IMAGE ID ID/COD>和<代码>标签。ID <代码> >代码>标签。TAGYIDID < /代码>。 然后查询可能如下所示:
SELECT
*
FROM
image_tags r
JOIN tags t USING (tag_id)
JOIN images i USING (r.image_id)
WHERE
-- What ever you like to search for
三大优势:
- 打字更少(出错的机会更少)
- 保持清晰的视图(当涉及较大的查询时)
- 不同列中的相同数据如
和tag\u id
不会在结果中只出现一次image\u id
标记的所有列以及图像的所有列。这是由选择*
引起的<代码>图像\标签
将告诉您哪个标签属于哪个图像。试着拉一点小提琴。
SELECT
*
FROM
image_tags r
JOIN tags t USING (tag_id)
JOIN images i USING (r.image_id)
WHERE
-- What ever you like to search for