Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在由链接表链接的多个表上执行文本搜索?_Postgresql_Join - Fatal编程技术网

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
    不会在结果中只出现一次

这很有帮助,但我还需要使用您实际可以使用的工具搜索images表,因为通过该查询,您将获得
标记的所有列以及
图像的所有列。这是由
选择*
引起的<代码>图像\标签
将告诉您哪个标签属于哪个图像。试着拉一点小提琴。
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