Re: FAQ「値ラベルの入力が面倒なのですが、なんとかなりませんか?」について (nekoandcoro) KH Coder 旧掲示板
[ツリー表示] [留意事項] [ワード検索] [過去ログ]

  [No.3052] Re: FAQ「値ラベルの入力が面倒なのですが、なんとかなりませんか?」について 投稿者:nekoandcoro  投稿日:2017/07/18(Tue) 14:08:11
Re: FAQ「値ラベルの入力が面倒なのですが、なんとかなりませんか?」について (画像サイズ: 486×482 36kB)

お忙しいところありがとうございました。

早速試した結果です。
・SQL文は、テーブル outvar_lab_newを CREATEし、最初の INSERT-WHERE文まで正常に動作しました。
・次の INSERTの FROM LEFT JOIN ON の部分でエラーが出ました(添付画像を参照してください)。


解決の糸口を探るため、SQL文に不慣れでしたのでOracleで文法とにらめっこしてました。
(気が付いたこと)
 ・SELECT * FROM文で関連するテーブルを確認すると、
  テーブル outvar_lab の内容が NULL です。
 
 ・この状況で、ON 条件文のうち
  =============
AND outvar_lab.val = temp_labels.val
=============
   
  の左側が NULL だとSyntaxはエラーにならないのでしょうか?



(参考:実行したSQL全文)
================================================================
CREATE TABLE temp_labels (
var VARCHAR(255),
val VARCHAR(255),
label VARCHAR(255)
);

INSERT INTO temp_labels (var, val, label) VALUES
( '発生場所その他', 'RI室', 'テスト1' );

CREATE TABLE outvar_lab_new (
id INT PRIMARY KEY AUTO_INCREMENT,
var_id INT NOT NULL,
val VARCHAR(255),
lab VARCHAR(255)
);

INSERT INTO outvar_lab_new (var_id, val, lab)
SELECT outvar.id, temp_labels.val, temp_labels.label
FROM outvar, temp_labels
WHERE outvar.name = temp_labels.var;

INSERT INTO outvar_lab_new (var_id, val, lab)
SELECT outvar_lab.var_id, outvar_lab.val, outvar_lab.lab
FROM outvar, outvar_lab
LEFT JOIN temp_labels ON
outvar.name = temp_labels.var
AND outvar_lab.val = temp_labels.val
WHERE
outvar_lab.var_id = outvar.id AND temp_labels.label IS NULL;

DROP TABLE temp_labels;
DROP TABLE outvar_lab;

RENAME TABLE outvar_lab_new TO outvar_lab
================================================================


- 関連一覧ツリー (■ をクリックするとツリー全体を一括表示します)