0

これが私の質問です。v.locationは、フロアと部屋の情報を含む列です。つまり、FL 2 RM 204です。これを、部屋とフロアが2つの別々の列に分割されているmv_roomsテーブルと比較する必要があります。

select v.location, v.customer_name, v.street_name
from voip_validate v, mv_rooms r, mv_buildings b
left outer join voip_validate
on v.location = 'FL ' || r.floor || ' RM ' || r.room
where 'FL ' || r.floor || ' RM ' || r.room is null
and b.dps_number = r.dps_number;

クエリを実行すると、次のエラーが発生します。

ORA-00904:"R"。"ROOM":無効な識別子00904。00000-"%s:無効な識別子" *原因:
*アクション:行:4列でエラー:47

4

2 に答える 2

1

Oracle結合構文とANSIを混在させています。

select v.location, v.customer_name, v.street_name
  from voip_validate v
       left outer join mv_rooms r
                    on v.location = 'FL ' || r.floor || ' RM ' || r.room
       left outer join mv_buildings b
               on b.dps_number = r.dps_number
 where r.room is null

また、where句はnullになることはないため、完全に間違っています。

where 'FL ' || r.floor || ' RM ' || r.room is null

「V」に一致する行がない行を返すつもりでしたか?

于 2013-01-22T17:01:35.127 に答える
1

文字列全体ではなく、フロアフィールドとルームフィールドのNULLをテストする必要があるため、where句には間違いなく問題があります。

select v.location, v.customer_name, v.street_name
from voip_validate v, mv_rooms r, mv_buildings b
left outer join voip_validate
on v.location = 'FL ' || r.floor || ' RM ' || r.room
where (r.floor is null or r.room is null)
and b.dps_number = r.dps_number;

フロアや部屋が整数データ型であるという問題があるかもしれません。それらを文字列に変換します。

于 2013-01-22T16:59:26.947 に答える