4

この小さなイントロのすぐ下に、私が使用しているデータベーステーブルのレイアウトが表示され、次に私の質問の詳細が表示されます。できるだけ多くのガイダンスを提供してください。私はまだPHPとSQLを学んでいますが、これを理解するためにあなたの助けに本当に感謝しています。

表1('bue')-chp_cd rgn_no bgu_cd work_state

表2('chapterassociation')-chp_cd rgn_no bgu_cd work_state

データベースタイプ:PostgreSQL

私はこれらの2つのテーブルで次のことを行おうとしています。私がしなければならないのは結合だと思いますが、私はそれについてあまり詳しくないので、学ぼうとしています。これまで、これらのテーブルからデータセットを選択するクエリを作成して、データベース全体でクエリが実行されないようにしました。データを選択した状態で、次のことを実行しようとしています...

何よりもまず、テーブル1の「work_state」(「bue」)をテーブル2の「work_state」(「chapterassociation」)と照合する必要があります。一致が見つかったら、テーブル1の「bgu_cd」(「bue」)をテーブル2の「bgu_cd」(「chapterassociation」)と一致させる必要があります。両方の一致が見つかると、常に2番目のテーブル内の一意の行を指します(「chapterassociation」)。2番目のテーブル('chapterassociation')内の一意の行を使用して、'rgn_no'と'chp_cd'の値を最初のテーブル('bue')内で更新して、2番目のテーブル('chapterassociation')内の値と一致させる必要があります。

これはおそらく多くのことを求めていることを私は知っていますが、誰かがこれを行うためのクエリを作成するのを手伝ってくれるなら、それは素晴らしいことです!私はこれに永遠に無知になりたくないので、私は本当に学びたいです。ここでのJOINと比較がどのように機能するかを完全に理解しているかどうかはわかりませんが。

私が正しければ、これを別のクエリに入れて、PHPにする必要があります。したがって、たとえば、最終クエリの最終結果で終了するIF ELSEステートメントは、おそらくいくつかあります。これにより、値がテーブル2からテーブル1に更新されます。

4

1 に答える 1

3

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
于 2012-04-29T23:16:25.450 に答える