私は既存のデータベース構造を持つウェブサイトを継承しました。私は、次の構造のようなものを持っている一つのテーブル(TABLE1
)を持つ:テーブルのフィールド値を比較してデータベースに新しい値を挿入する
POSITION_1_TAGS_PERMITTED | POSITION_2_TAGS_PERMITTED | POSITION_3_TAGS_PERMITTED
----------------------------------------------------------------------------------
CD | EN,CS | TECH,CS
TABLE1
は20列まで、この構造を有しています。
Iは、次いで、選択された値を格納する別のテーブル(TABLE2
)(また、20列を有する)を有する:
POS1_SEL_SYMBOL | POS2_SEL_SYMBOL | POS3_SEL_SYMBOL | POS4_SEL_SYMBOL
---------------------------------------------------------------------
A | AAPL | | AA
を私は変数のタグがCS
あり、この場合に選択された変数のタグを有します。私はTABLE1
に許可されたタグを持つ位置を見つけて、TABLE2
を参照して、その位置にすでにエントリがあるかどうかを確認したいと思います。この場合、エントリを追加するカラムとしてポジション3が指定され、新しいエントリをデータベースに追加するための新しい更新文を作成します。私のデータベースの列形式でこれを行う簡単な方法はありますか?
EDIT:変数に複数のタグがある場合は、許可されているタグの列を検索することができます。 SQL文を次のように更新しようとしました。
SELECT eventid,
CASE
WHEN (FIND_IN_SET("S&P", POSITION_1_TAGS_PERMITTED) OR FIND_IN_SET("CS", POSITION_1_TAGS_PERMITTED)) AND POS1_SEL_SYMBOL = ""
THEN 1
END AS found_col
FROM TABLE1
JOIN TABLE2
USING (eventid)
WHERE EVENTID='159'
このクエリでは、CSの検索と同じ結果は得られません。
タグCSを使用して、ポジション2とポジション3の間の決定方法を教えてください。 – BeetleJuice
@BeetleJuice TABLE2の最初の空の列を選択します。位置2が空白の場合は、そこに挿入します。この例では、位置2は既に満杯になっているため、位置3に移動する必要があります。 – user1048676
2つのテーブルの行を関連付ける列はありますか? – Barmar