Visual Studioのクエリツールで実行しているクエリがあり、次のエラーが発生します。
ORA-00972:識別子が長すぎます。
オラクルには30バイトの制限があることを認識していると思いますが、これは私が実行しようとしているクエリです。
select
"cef_tsroma.tsrido" as "truck",
"cef_tsroma.dosvlg" as "rideNumber",
"cef_v_cw_shipment.shipmentNumber" as "shipmentNumber"
from
"cef_tsroma" left outer join "cef_v_cw_shipment" on "rideNumber" = "shipmentNumber"
where
"truck" = '104490'
残念ながら、データベースの正規化について何も知らない、または単にできない、またはすべきでない状況にある別の会社によって管理されているため、データベース構造自体を変更することはできません。知らない。「cef_v_cw_shipment」がビューであることを考慮に入れてください。
track = '104490'は、テスト目的の単なるサンプル整数です。私はさまざまな解決策を試みましたが、正しい方法(または正しい方法を探すこと)は私を逃しているようです。
心から、私。
PSこれがばかげた質問なら申し訳ありません。
編集:
select
"cef_tsroma"."tsrido" as "truck",
"cef_tsroma"."dosvlg" as "rideNumber",
"cef_v_cw_shipment"."shipmentNumber" as "shipmentNumber"
from
"cef_tsroma" left outer join "cef_v_cw_shipment" on "rideNumber" = "shipmentNumber"
where
"truck" = '104490'
「rideNumber」は無効な識別子になりました。すぐにこれに戻ります。間違った方法でエイリアシングしていると思いますが、よくわかりません。調べてみてください。
EDIT2:
select
ct.tsrido as "truck",
ct.dosvlg as "rideNumber",
cs.shipmentNumber as "shipmentNumber"
from "cef_tsroma" ct
left outer join "cef_v_cw_shipment" cs
on "rideNumber" = "shipmentNumber"
where "truck" = '104490'
この構文は、前の構文よりもかなりクリーンで理解しやすいので、今から使用します。しかし、私はまだORA-00904: "rideNumber":無効な識別子に遭遇しています(これは結合行でもshipmentNumberにカウントされる可能性があります。これをまだ理解しようとすると、グーグルは命名のヒントを返します:成功しません。まだ検索しています。
Edit3:
select
ct.tsrido as truck,
ct.dosvlg as rideNumber,
cs.shipmentNumber as shipment
from
"cef_tsroma" ct
left outer join
"cef_v_cw_shipment" cs
on
ct.dosvlg = cs.shipmentNumber
where
truck = '104490'
提案に従って、これが現在の構文です。現在、エラーメッセージが返されます。
エラーORA-00904:"CS"。"SHIPMENTNUMBER":無効な識別子
申し訳ありませんが、私はこのデータベースを設計しませんでした>):
Edit4 / solution?
奇妙なことに、これはうまくいくようです。
select ct."tsrido", ct."dosvlg", cs."shipmentNumber" as shipmentnumber
from "cef_tsroma" ct
left outer join "cef_v_cw_shipment" cs
on ct."dosvlg" = cs."shipmentNumber"
where ct."tsrido" = '104956';