1
私はMySQLに変換しようとしているOracleのSQLクエリを使用しています。OracleをMySQLに変換する:出力が異なる
以下は両方からのクエリの一部です。データベースの構造が異なるため、異なるテーブルとカラムの名前が見つかります。
私はそれを実行するとMYSQLの部分で何の結果も得られません。理由を調べるのに助けが必要ですか?
OracleのSQLクエリ:
(SELECT all_ips.child_itm_num,
pres.child_itm_num AS present,
prev.child_itm_num AS potential_prev_version
FROM
(SELECT DISTINCT child_itm_num
FROM EDW.dpdm_bom bom
WHERE root_itm_num IN ('a','b')) all_ips,
(SELECT DISTINCT child_itm_num
FROM EDW.dpdm_bom bom
WHERE root_itm_num = 'b') pres,
(SELECT DISTINCT child_itm_num
FROM EDW.dpdm_bom bom
WHERE root_itm_num = 'a') prev
WHERE SUBSTR(all_ips.child_itm_num,0,LENGTH(all_ips.child_itm_num) - 3) = SUBSTR(pres.child_itm_num, 0,LENGTH(pres.child_itm_num) - 3)
AND SUBSTR(prev.child_itm_num,0,LENGTH(prev.child_itm_num) - 3) = SUBSTR(pres.child_itm_num, 0,LENGTH(pres.child_itm_num) - 3)
AND prev.child_itm_num NOT IN (SELECT child_itm_num
FROM EDW.dpdm_bom bom
WHERE root_itm_num ='b'))
MySQLのクエリ:
(SELECT all_ips.child_name,
pres.child_name AS present,
prev.child_name AS potential_prev_version
FROM
(SELECT DISTINCT child_name
FROM DPDM_BOM bom
WHERE child_name IN ('a','b')) all_ips,
(SELECT DISTINCT child_name
FROM DPDM_BOM bom
WHERE revision_name = 'b') pres,
(SELECT DISTINCT child_name
FROM DPDM_BOM bom
WHERE revision_name = 'a') prev
WHERE SUBSTR(all_ips.child_name,0,LENGTH(all_ips.child_name) - 3) = SUBSTR(pres.child_name, 0,LENGTH(pres.child_name) - 3)
AND SUBSTR(prev.child_name,0,LENGTH(prev.child_name) - 3) = SUBSTR(pres.child_name, 0,LENGTH(pres.child_name) - 3)
AND prev.child_name NOT IN (SELECT child_name
FROM DPDM_BOM bom
WHERE revision_name = 'b'))
してください!
anushaをH.
私の場合、Child_name自体を検索する必要があります。ありがとう。 – Anusha
しかし、あなたのOracleクエリーでは、あなたは 'root_itm_num IN( 'a'、 'b')'を探しています。これは、mysqlスキーマに相当する 'revision_name IN( 'a'、 'b')'です。それで、私は提案した。 –
ああ、あなたは正しいです!私は他のいくつかの場所でそれを変更しなければならなかった。ありがとう:) – Anusha