PostgreSQL 查询和 PHP 帮助


PostgreSQL Query and PHP Assistance

在这个

小介绍的正下方,您将看到我正在使用的数据库表的布局,然后您将看到我问题的详细信息。请提供尽可能多的指导。我仍在学习PHP和SQL,我非常感谢您的帮助,因为我掌握了窍门。

表一("bue"(--chp_cdrgn_nobgu_cdwork_state

表二("章节关联"(--chp_cdrgn_nobgu_cdwork_state

数据库类型:PostgreSQL

我正在尝试用这两个表执行以下操作,我认为这是我必须做的 JOIN,但我对它不是那么熟悉,我正在尝试学习。到目前为止,我已经创建了一个查询,用于从这些表中选择一组数据,以便查询不会在整个数据库上运行。现在,选择数据后,我正在尝试执行以下操作...

首先,表一的"work_state"("bue"(应与表二的"work_state"("章节关联"(进行核对。找到匹配项后,表一的"bgu_cd"("bue"(应与表二的"bgu_cd"("章节关联"(匹配。当找到两个匹配项时,它将始终指向第二个表中的唯一行("章节关联"(。使用第二个表中的唯一行("章节关联"(,"rgn_no"和"chp_cd"的值应在第一个表("bue"(中更新,以匹配第二个表中的值("章节关联"(。

我知道这可能要求很多,但如果有人可以帮助我构建一个查询来做到这一点,那就太好了!我真的很想学习,因为我不想永远对此一无所知。虽然我不确定我是否完全理解这里的 JOIN 和比较是如何工作的。

如果我是对的,我将不得不将其放入单独的查询中,然后在 PHP 中。因此,例如,它可能是一些以最终查询的最终结果结尾的 IF ELSE 语句,该结果将表二的值更新为表一。

JOIN 将为您完成两个级别的匹配...

  bue
INNER JOIN
  chapterassociation
    ON  bue.work_state = chapterassociation.work_state
    AND bue.bgu_cd     = chapterassociation.bgu_cd

实际算法由PostreSQL确定。 它可以是合并,使用哈希等,并且取决于有关数据的索引和其他统计信息。 但是你不需要直接担心这一点,SQL会为你抽象出来。

然后,您只需要一种机制将数据从一个表写入另一个表......

UPDATE
  bue
SET
  rgn_no = chapterassociation.rgn_no,
  chp_cd = chapterassociation.chp_cd
FROM
  chapterassociation
WHERE bue.work_state = chapterassociation.work_state
  AND bue.bgu_cd     = chapterassociation.bgu_cd