PL/SQLでDELETE文を書こうとしているのですが、
文法がわかりません。。。
分かる方がおられましたら、教えてくださいm(_ _)m

今、TABLE1を削除したいのですが、条件がいろいろあって、
以下のように書いてみたのですがダメでした。
こういう書き方は、できないんでしょうか・・・。

削除条件は、TABLE2に存在し、かつ、TABLE2のTENSUが0のもので、
TABLE3が存在しないものです。

DELETETABLE1
FROMTABLE1
,TABLE2
,TABLE3
WHERETABLE1.ID = TABLE2.ID
ANDTABLE2.TENSU = 0
ANDNot Exists (SELECT TABLE3.ID
FROMTABLE3
WHERETABLE3.ID = TABLE2.ID)

説明が下手なので、うまく、伝わっているか、心配なのですが・・・、
よろしくお願いします。

このQ&Aに関連する最新のQ&A

文法 SQL」に関するQ&A: PL/SQLでのSQL文法

A 回答 (2件)

PL/SQLというより、単純なSQLですね。



DELETE TABLE1
WHERE TABLE1.ID in
(select TABLE2.ID
FROM TABLE
WHERE TABLE2.TENSU=0
AND TABLE2.ID Not in
(SELECT TABLE3.ID
TABLE3
WHERE TABLE3.ID=TABLE2.ID
)
)

でしょうかね?
実行確認せずに記述してますので間違ってたらごめんなさい。
    • good
    • 0

すみません。

一部訂正します。

DELETE TABLE1
WHERE TABLE1.ID in
(select TABLE2.ID
FROM TABLE
WHERE TABLE2.TENSU=0
AND TABLE2.ID Not in
(SELECT TABLE3.ID
TABLE3
)
)

通常の数式のルールと同じく、括弧の中から処理されます。
Deleteの条件文(select table2.id以降)でテストしてみて
OKならdelete文を追加してください。

なお、3テーブルともIDにINDEXを作成した方が速いかな?
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございます!
INを使わないといけなかったんですね・・・。
SQLもあまりやったことないので。
これを参考に、PG作ってみたら、できました。
ホントにありがとうございました(^^)

お礼日時:2001/09/14 14:32

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qplease come for play to a house って文法あってますか?

タイトルどおりです。
please come for play to a house って文法あってますか?
遊びに来てねって意味だと思うのですが、英文として
問題ないでしょうか?

宜しくお願い致します。

Aベストアンサー

お使いの単語で作るならば
Please come to my house to play (with me).
あたりがより自然に思われますよ。

QWHILE (CHKIMG(”A.bmp”)=FALSE)←この終了条件を2個にするには

タイトルの画像Aが画面上に2個あったらループを終了させたいです。
WHILE (CHKIMG(”A.bmp”)=FALSE)のこの部分をどう変えればよいのでしょう?

あとチェッキングの画像透過率の指定で色無視で形で判断というのは
白黒で判断ってことなんですか?

Aベストアンサー

>環境というのはどのような情報
前回の質問では最低限の情報として書いてましたよね  UWSC と
他に書くとすれば 使ってるosが何なのか
使用しているバージョンはいくつなのかといったようなことです
質問内容によっては pcの型番がそういった情報に該当することもあります

質問する方は当人の話ですから分かってて当たり前ですが
回答する側には こいつ何言ってんだ としか思いません

私の場合も前回は uwscと書かれていたので質問内容を確認・回答
今回はたまたまタイトルで前回と同じ人とすぐ分かったので回答しただけの話であって
今回のようなタイトルでいきなり前触れなく質問があったらきっと相手にしないでしょう

QCome on と come toの違い。

Come on my houseといいますが、Come to my house でも文法的に間違っていませんか?また意味は前者がおいでよ。で後者は来なさいでしょうか。宜しくお願いします。

Aベストアンサー

>Come to my house でも文法的に間違っていませんか?
もちろん。

>また意味は...?
まず構造がちがいます。
(Come on) + (my house)
(Come) (to my house)
上のは、現在その状態にある場合。
下のは、いつでもいいから都合や機会があったら来てくださいの意味。
もちろん、その機会がいまなら、それでもOKです。

Qいったい,,,,.NETって。。。

質問タイトルがあまりにプアでごめんなさい。素人なもんで。。。。。
MS .NETって、端的にいって何ができるの?何が違うの?アプリケーションの開発環境が向上しただけ?例えば、VB6で作ったアプリでは動作不可能だったことが、.NET環境では可能になるとかあるんですか?

あとWinXPの管理ツールをみると、MS.NET Framework1.1 xxxxxがありますけど、何に使うの?

Aベストアンサー

>アプリケーションの開発環境が向上しただけ?

その認識でいいと思います。
開発側からすると大きな違いです。
ユーザのメリットとしては、ソフトの品質が上がり、安くなる。
# 現状はそうでもないか

新しく出来ることは、ノータッチデプロイメントぐらいですかね。

Qu to go to と u to come to

「I receive you to go to UK.」はどういう意味ですか?
自分なりの訳「ULに行くことを歓迎する」(これを言っている人はUK外の人?)

また「I receive you to come to UK.」は誤った文法ですか。

Aベストアンサー

意味を固定としないなら文法的な間違いはないです。
ただ主観の問題で、仰る通り
言っている本人がUKの外にいるか内にいるかの差です。

goは話し手(I)からみてもyouからみてもUKが第三者の場所にある場合で
comeは話し手(I)とyouと場所に関係性が必要で、今回の文章では話し手(I)がUKにいないと成り立ちません。

QACCESS VBAでテーブル内の特定のフィールドを削除 .Fields.Delete ("*")

教えて下さい。
 倉庫テーブル
  フィールド:
   北海道倉庫1
   北海道倉庫2
   仙台倉庫1
   仙台倉庫2
   仙台倉庫3



とあります。仙台と付くフィールドを全て削除したく

CurrentDb().TableDefs("倉庫テーブル").Fields.Delete ("仙台倉庫1")

の”仙台倉庫1”の部分を
(”仙台”&”*”)にしたのですが、動きません。
どのように書けば良いのでしょうか?
宜しくお願い致します。

Aベストアンサー

さすがにそのワイルドカードは無理。
こんな風では?

Sub てすと()
Dim DB As Database
Dim Tdf As DAO.TableDef
Dim Fld As DAO.Field
Dim i As Integer
Set DB = Application.CurrentDb
Set Tdf = DB.TableDefs("倉庫テーブル")

For i = Tdf.Fields.Count - 1 To 0 Step -1
If Tdf.Fields(i).Name Like "仙台*" Then
Debug.Print Tdf.Fields(i).Name
'Tdf.Fields.Delete Tdf.Fields(i).Name
End If
Next
Set Tdf = Nothing: Set DB = Nothing
End Sub

確認のためイミディエイトウィンドウに出力してますので
OKだったら下のコメントを外して実行してください。
※念のためバックアップを取ってからに。

Q"maybe to come see you? would that

"maybe to come see you? would that be ok?"これは文法的に何て言っているのでしょうか?詳しい方教えて頂ければと思います。よろしくお願いします

Aベストアンサー

学校文法的に言えば

 I may come to see you. Would that be ok? 

「(はっきり分からないが)貴方に会いに行くかもしれない。いいですか?」

 と言っているのでしょう。

 maybe には「かもしれない」といった下記の意味があります。

 http://eow.alc.co.jp/maybe/UTF-8/

Qax^2+bx+c=0の求解プロセスをDFDで表したいのですが・・・

ax^2+bx+c=0の求解プロセスをDFDで表したいのですが、aが0か、判別式が正か負か0かなどによって、その後の処理が変わってきますよね?
DFDの場合、そのような分岐はどう書けばよいのでしょうか?

Aベストアンサー

もしかしたらすでに解決されているかもしれませんが…

DFDは、本来、そういうレベルの処理をするものではありません。
フローチャートが処理の流れの記述に偏った反省から、
DFDは、処理ではなくデータの流れる方向を記述するものとなっています。
このぐらいの問題規模なら、むしろフローチャートの方が合ってるでしょう。

まあただ「本来向いていない」と言っても、
そちらには書く必要があるのだと想像します。

一応、分岐を表す記号はあります。
+を○で囲んだ記号を、二つの出力の間に書けば、
「二つの出力のどれかになる」ことを表します。
本では「分離」と言っています。
(ただし、デマルコは「基本的に使わないようにした方がよい」と書いています)

また、「プロセス」から複数の矢印を出すだけでもかまわないと思います。
矢印の側に「判別式が正の場合」「負の場合」など注釈を書いておけばいいでしょう。

Qcome to doについて

come to doには~するようになる意味がありますがこれは現在完了の過去から現在への継続というニュアンスが含まれている感じがします。have come to とcome toにはどんな違いがあるのですか。

Aベストアンサー

>現在完了の過去から現在への継続というニュアンス

を持った動詞(句)は、いろいろあります。例えば、

keep ~ing があります。

1.He keeps sleeping. を 現在完了にすると、
2.He has kept sleeping. です。

この二つの違いは、

1.が、「彼は、眠り続けている。」ですが、
2.は、「彼は、過去のある時点に何かがあって、その時点からづっと眠っている。」です。

keepは、現在の継続という感覚が強いのですが、
come to は、現在・過去のある時点で、ある状態になると言う感覚なので、

3.He comes to play tennis.
4.He has come to play tennis.

では、
3.が、「その内、彼はテニスをするようになる。」で、
4.は、「彼は、すでに、過去のある時点から、テニスをするようになっている。」です。

5.He came to play tennis. は、過去のある時点で、テニスをするようになったということで、今はどうだか述べていません。

>現在完了の過去から現在への継続というニュアンス

を持った動詞(句)は、いろいろあります。例えば、

keep ~ing があります。

1.He keeps sleeping. を 現在完了にすると、
2.He has kept sleeping. です。

この二つの違いは、

1.が、「彼は、眠り続けている。」ですが、
2.は、「彼は、過去のある時点に何かがあって、その時点からづっと眠っている。」です。

keepは、現在の継続という感覚が強いのですが、
come to は、現在・過去のある時点で、ある状態になると言う感覚なの...続きを読む

Qruby "\001\376".unpack("C*") => [1, 254]の意味

"\001\376".unpack("C*") => [1, 254] の
[1, 254]ってどういう数字を意味するのですか?8ビット整数なのに配列で結果が出ていることの意味がわかりません。ご教授ください。

Aベストアンサー

"\001\376"
は、バイナリ文字列で
"C*"

バイトとして数値を取り出し配列にする
ということだと思います。
\376は、8進数で、10進にすると254になります。
見当違いだったらすみません。


人気Q&Aランキング

おすすめ情報