お世話になります。

更新のSQL文を考えているのですが、なかなかうまく動きません。
どなたか教えていただけないでしょうか?

やりたいことは、"KSK011"と"KSJ01"で"HINB"という項目で
マッチングしていたら、KSJ01の"ZAIK"をKSK011の"ZZAI"
にセットしたいと考えています。

UPDATE KSK011 SET KSK011.ZZAI = KSJ01.ZAIK
WHERE KSK011.HINB IN
(SELECT KSK011.HINB FROM(KSK011) INNER JOIN KSJ01 ON KSK011.
HINB = KSJ01.HINB)

動作させると、FROMのカッコが不適切とエラーがでます。カッコを取ると”マルチパート識別子 ??KSJ01.ZAIK?? をバインドできませんでした。”となります。どこがまずいのでしょうか?

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

BiND とは」に関するQ&A: binding offerとは?

A 回答 (2件)

下記の書き方だと、UPDATE句が参照可能なのはKSK011のみです。


WHERE句の IN内にサブクエリで書かれても「KSJ01」はメインで参照はできません。あくまでWHERE条件として使われます。

> UPDATE KSK011
> SET KSK011.ZZAI = KSJ01.ZAIK
>WHERE KSK011.HINB IN
>(SELECT KSK011.HINB FROM(KSK011)
> INNER JOIN KSJ01 ON KSK011.HINB = KSJ01.HINB);

上記をわかりやすくSELECT句で表現すると以下となります。
select xxx.colx1,zzz.colz1
from xxx
inner join zzz on zzz.colz1 = xxx.colx1
where xxx.colx1 in (select coly1 from yyy)

メインのSELECT句が参照できるのはFROM句で指定されたxxxと
ジョインしているzzzだけです。
yyyはin句の評価でしか使われません。

FROM句に入れていないのでSELECT候補ではありません。
FROM内にないものは参照できないと考えてください。

UPDATE文を考える時もSELECT文を考えてから置き換えたほうがわかりやすいです。SELECTできなければUPDATEもできません。
    • good
    • 0
この回答へのお礼

詳しい説明ありがとうございます。

WHERE句なので、評価としてしか使えないんですね。
納得しました。 

丁寧な説明ありがとうございます。

お礼日時:2009/05/28 16:33

サブクエリの中でJOINしたところで、更新をするメインクエリがKSJ01を参照できないわけですから、そういうエラーになります。


SQL Serverの場合、正しくは以下の通りです。

UPDATE KSK011
SET KSK011.ZZAI = KSJ01.ZAIK
FROM KSK011
INNER JOIN KSJ01 ON KSK011.HINB = KSJ01.HINB

この回答への補足

jamshid6さん素早いアドバイスありがとうございます。

メインクエリでKSJ01を参照できないと言ってもらっていますが、
私の書いたほうの1行目でしょうか?
初歩的なことですが、KSJ01と書いてなぜ参照できないんでしょうか?

補足日時:2009/05/28 15:16
    • good
    • 0

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

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

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

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

Qマルチの幅について

幅80cmほどのスペースに高畝を作ってナスを植える予定です。
マルチをかけようと思うのですが、95cm幅と135cm幅どちらが適当でしょうか?
畝を測った限りでは、95cmでは短く、135cmでは長すぎるような感じですが、
実際にマルチがけをしたことがないので許容範囲が分かっていません。
ホームセンターでは95cmが主に売れているようでしたが、短いとかけにくいでしょうか?
あるいは短くてもマルチ止めの杭で止めてしまえば問題ないのでしょうか?
選び方、かけ方等もアドバイス頂ければ幸いです。よろしくお願いします。

Aベストアンサー

短いと風が入りやすく押さえ止めが沢山いります。
その上土も乾燥しやすいです、周辺に雑草も生えやすいです。

長い場合は溝まで来てしまって、土を載せておきますが、
片付けるときにやりにくいです。
保温性が必要な場合は有効です、雑草も生えません。

QSQL ServerのINNER JOINについて

SQL Server 2008 R2のINNER JOINについて質問させて下さい。

------------------------------
SELECT * FROM [Customer]
   INNER JOIN Pref
      ON Customer.CustomerPref1 = Pref.PrefId
      ON Customer.CustomerPref2 = Pref.PrefId
      ON Customer.CustomerPref3 = Pref.PrefId
WHERE ([CustomerId] = 123)
------------------------------

3つもONがあって変なSQL文となっております。
(当然SQLエラーとなります。)

やりたい事は、
顧客フォーム[Customer]の中に、都道府県をプルダウン選択する項目が3つあります。

3つとも都道府県マスタテーブルをリレーション(FK)しております。
3つの都道府県項目で「都道府県名」をそれぞれSELECTするには、
どうしたらよいでしょうか?

ご教授頂けますようお願い申し上げます。

------------------
▼DB情報
顧客情報テーブル:Customer
顧客ID:CustomerId
都道府県カラム1:CustomerPref1(1,2,3,~などの値が格納)
都道府県カラム2:CustomerPref2(1,2,3,~などの値が格納)
都道府県カラム3:CustomerPref3(1,2,3,~などの値が格納)

都道府県マスタテーブル:Pref
都道府県ID:PrefId(1, 2, 3,~などの値が格納)
都道府県名:PrefName(1:北海道, 2:青森県, 3:岩手県~などの値が格納)

SQL Server 2008 R2のINNER JOINについて質問させて下さい。

------------------------------
SELECT * FROM [Customer]
   INNER JOIN Pref
      ON Customer.CustomerPref1 = Pref.PrefId
      ON Customer.CustomerPref2 = Pref.PrefId
      ON Customer.CustomerPref3 = Pref.PrefId
WHERE ([CustomerId] = 123)
------------------------------

3つもONがあって変なSQL文となっております。
(当然SQLエラーとなります。)

やりたい事は、
顧客フォーム[Customer]の中に、都道府県...続きを読む

Aベストアンサー

こんな感じでしょうか?
この場合は、内部ではなく外部結合にして都道府県テーブルを
別名で3つ開けるという形になると思います。


SELECT Customer.*
   , Pref1.PrefName as PrefName1
   , Pref2.PrefName as PrefName2
   , Pref3.PrefName as PrefName3
 FROM Customer
 LEFT OUTER JOIN Pref Pref1
  ON Customer.CustomerPref1 = Pref1.PrefId
 LEFT OUTER JOIN Pref Pref2
  ON Customer.CustomerPref2 = Pref2.PrefId
 LEFT OUTER JOIN Pref Pref3
  ON Customer.CustomerPref3 = Pref3.PrefId
WHERE CustomerId = 123

Q穴あきのマルチの穴が6個以上のもの

穴あきのマルチについてですが、幅95cmのもので6条以上のものは売っていますか?

Aベストアンサー

ふつう言われるのは「穴あきマルチ」ですが、専門的?業界的?には「有孔マルチ」です。
逆質問的に
1.どのくらいの面積に必要なのでしょうか?
2.また植える物は何でしょうか?

1については、農家では100m巻きや200m巻きを使います。
50m巻きやそれ以下の物もホームセンターで販売されているようですが・・
95cm幅の物ですと、100m巻き1本で通路部分を含めて約150m2をカバーします。

2については、一般にマルチは最小株間が15cmだと思います。
これはこれ以上狭くすると、密植で葉の展開が悪い→日当りが悪い→生育が悪くなる。
また密植になると、通風が悪く病気が出やすくなる。
株間15cmなら野菜ではニンジンやネギくらいしか思い浮かびません→それ以下ですと汎用性が少ない→一般向きでないので作らない。

総合的に
A案.95cm幅5条播きで我慢する。
B案.無孔マルチに自分で孔を開ける。
 http://kinboshi-pro.jp/SHOP/96782/110417/list.html
 http://www.imaginet-de.com/item/multi01.html
 http://www.marue.com/category/15_398_404/
 鉄パイプや空き缶で似た物が作れます。
C案.マルチ製造メーカーに聞いて、半端物の在庫があるか聞いてそれを買うか、思う仕様の製品の販売先・・・JAなど聞き出す。
D案.メーカーに特注する。・・50本が最低です。・・約16,000m2(1.6ha)、価格で40万円くらい??
http://www.sekisui.co.jp/filmk/product/agr/product/cnby.html
http://www.c-n-k.co.jp/l_sonota/index.html

違ったマルチでスリットマルチ:http://satohk.blog.so-net.ne.jp/index/2

各種資材で、http://eguchiya.blog.so-net.ne.jp/archive/c35377076-3

ふつう言われるのは「穴あきマルチ」ですが、専門的?業界的?には「有孔マルチ」です。
逆質問的に
1.どのくらいの面積に必要なのでしょうか?
2.また植える物は何でしょうか?

1については、農家では100m巻きや200m巻きを使います。
50m巻きやそれ以下の物もホームセンターで販売されているようですが・・
95cm幅の物ですと、100m巻き1本で通路部分を含めて約150m2をカバーします。

2については、一般にマルチは最小株間が15cmだと思います。
これはこれ以上狭くすると、密植で葉の展開が悪い...続きを読む

QOUTER JOIN と TOP10との組み合わせ

LEFT OUTER JOIN と TOP10との組み合わせ

テーブルAと LEFT OUTER JOIN するテーブルBがあり、
単にLEFT OUTER JOINすると、
レコードA01 レコードB01
レコードA01 レコードB02
レコードA01 レコードB03

のようにレコードBに対し、該当する同じレコードAが複数取得されます。

この状態でTOP10をかけると、テーブルAのTOP10が欲しいのに、
テーブルBも混じった数で取得されてしまいます。
(テーブルAは10レコード取得できない)

これをテーブルAのTOP10を取得して、それにJOINするテーブルBの数は問わない方法は可能でしょうか?

Aベストアンサー

副問い合わせを使って「テーブルAのTOP10を抽出したもの」とテーブルBを外部結合したらどうでしょうか。

SELECT AA.列名, テーブルB.列名 FROM (SELECT TOP 10 列名 FROM テーブルA) AA LEFT OUTER JOIN テーブルB ON (結合条件)

このようにFROM句の後に()をつけてSELECT文を記述すると、そのSELECT文の結果を一つの表(ビュー)として扱えます。

QDVDコンポを書き込みの出来るマルチコンポに換装するには。

DVDコンポを書き込みの出来るマルチコンポに換装するには。

Dellのデスクトップを使っています。DVDコンポを書き込みの出来る内臓マルチコンポにしたいのですが、今までメモリーの増設位しかやったことが無いので,難しいでしょうか?

ドライブの付いている所は縦14X幅3,5センチ位有ります。

パソコンは  Dell DIMENSION3100C OSはWindowsXP

宜しくお願い致します。

Aベストアンサー

そのままでも大丈夫かとは思いますが参考のため説明します。

IDE(ATAPI)のケーブルは、きしめんみたいなリボン状のケーブルです。
そのケーブルにドライブを接続するのですが、そのケーブルは接続ドライブが2台付けれるんですね。

2台接続する場合、ドライブの設定で1台目2台目を選択させないとなりません。

業界用語でマスターとスレーブと呼びます。

市販されているドライブはマスター側もしくはケーブルセレクトに設定されています。

また一般的なPCはIDEが2ポート(2口)ついており最大4台(それぞれ2台づつ)接続できます。
1ポート目はHDD(マスター)・スレーブ側空き
2ポート目はDVD(マスター)・スレーブ側空き

このように接続されていると思いますのでそのまま差し込んで下さい。

もし1ポートのみでHDD・DVDの接続をされているPCの場合は
HDDがマスタ―設定・DVDがスレーブ設定となっていると思います。

マスター・スレーブなどの切り替えはシャンパースイッチと呼ばれるスイッチが
HDDやDVDに付いていますのでそこで切り替えます。

DVD-Rドライブは3,000円程度から販売されていますので一度買われてみて
わからなければまたこのサイトに質問する・・・という方法が良いのではないでしょうか

ただしドライブの交換も自己責任ですのでお忘れなく
(電源を入れっぱなしで抜き差しした・・コネクタをこじって曲げてしまったなど)

参考URL:http://kakaku.com/pc/dvd-drive/

そのままでも大丈夫かとは思いますが参考のため説明します。

IDE(ATAPI)のケーブルは、きしめんみたいなリボン状のケーブルです。
そのケーブルにドライブを接続するのですが、そのケーブルは接続ドライブが2台付けれるんですね。

2台接続する場合、ドライブの設定で1台目2台目を選択させないとなりません。

業界用語でマスターとスレーブと呼びます。

市販されているドライブはマスター側もしくはケーブルセレクトに設定されています。

また一般的なPCはIDEが2ポート(2口)ついており最大4台(それぞ...続きを読む

QJOINの時のONとWHEREの違いについて

二つのテーブルをjoinして比較したいときに
比較対象の項目がA,Bとあったとします。AはキーですがBはキーではありません。
このとき、ON句でTABLE1.A=TABLE2.A and TABLE1.B=TABLE2.B
とかくのと
ON句でTABLE1.A=TABLE2.A
WHERE TABLE1.B=TABLE2.B
と書くのとで結果に違いはあるのでしょうか?
違いが見つけられずに困っています。
違っていない場合、どちらが一般的でしょうか?

どうぞよろしくお願い致します。

Aベストアンサー

inner joinであれば、どちらも違いはありません。
outer joinであれば、まったく違うものになります。

outer joinの場合、on句の結合条件で偽となる行も、nullとして結果が返されます。また、where句の抽出条件で偽となる行は、最終的な結果としては返されません。

Qコピック・マルチライナーSPについて

漫画をマルチライナーで描いているのですが、最近マルチライナーSP惹かれます。

引っかかっている点は2つ、【使い心地の良さ】と【コスト】です。

凡ライナーと、SPの両方使ったことのある方に違いをお聞きしたいです。

SPはペン先・インクカートリッジのリロード式にもかかわらず、コスト面で優れているとは思えないのですが…。価格をみるかぎり凡ライナーのほうが安上がりに思えてしまいます。
しかし、凡ライナーには無い0.25や0.35などの線幅がSPにはあるみたいですね。

凡マルチライナーとSP、それぞれのメリット・デメリットを教えてください。
使い心地が良かったり、価格面で得するのであれば、使用頻度の高い0.5以下はSPに変えたいと思っています。

ご回答よろしくお願いします。

Aベストアンサー

はじめまして。
美術科を卒業して今年から専門学校で漫画を専攻しています。
基本的に自分はつけペンを使うのですが、コピック・マルチライナーも試しに使用した時期があるので(今は枠線とかに使ってます)参考になればと思い回答させてもらいます。

簡単な違いとしては普通のコピック・マルチライナーは消耗品でありインク切れ、ペン先が折れたりして破損した場合新品を買いなおさなければいけません。
しかし、SPの場合本体さえ買っておけば部分的な買い足しですむので長く使うほど安く済みます。
勘違いしている人が案外多いのですがSPは後ろの黒い部分を引っこ抜いてインクを交換(インクのみのカートリッジが売ってます)、ペン先を回してはずして交換できるので、同じ本体を何本も買う必要は無いです。

したがってコスト面ですが、普通のものが200円ぐらいでSPが400円ぐらいなので一見SPは損のように思えますがSPは実際カートリッジが150円ほどなので一回買ってしまえば次からは50円ほど普通のものを買うより安くなります。
なので頻繁に消耗するようならSPのほうが値段的にはお得です。

次に使いやすさですが、SPは素材がアルミ製、普通のものはプラスチックで重さが多少違います。
しかし、実際使ってみるとあまり違いは感じませんでした。
コピック・マルチライナーを普通に使いやすいと感じるなら別にSPでも十分描けると思います。

自分はSPのほうがアルミ製で高級感があるのでこちらを使っているのですが、実際のところそんなに大きな違いが無いというのが自分の感想です。
こんな回答ですがあなたのお役に立てれば幸いです。
漫画を描くのは大変ですが、楽しんでいい漫画を描いてください。
応援しています。

はじめまして。
美術科を卒業して今年から専門学校で漫画を専攻しています。
基本的に自分はつけペンを使うのですが、コピック・マルチライナーも試しに使用した時期があるので(今は枠線とかに使ってます)参考になればと思い回答させてもらいます。

簡単な違いとしては普通のコピック・マルチライナーは消耗品でありインク切れ、ペン先が折れたりして破損した場合新品を買いなおさなければいけません。
しかし、SPの場合本体さえ買っておけば部分的な買い足しですむので長く使うほど安く済みます。
勘違...続きを読む

QSQLで、Join句で結合したテーブルにデータが無い場合について

SQLについての質問です。

Join句を使ってテーブルを結合しています。
Aテーブル(社員データ)に存在する勤務区分フィールドの値に対応して、
Bテーブル(勤務データ)から勤務区分(一意)に対応したデータを持って来るSQLを作成したところ、
Bテーブルに存在しない勤務区分を持つAテーブルのデータは結果に出ませんでした。

このように、結合したBテーブルに対応するデータが無い場合でも、Aテーブルに存在するデータを全て出したい場合、
何か方法はあるのでしょうか?

現在は一度Aテーブルから全てのデータをセレクトした後に、1件1件ループしてBテーブルからセレクトする方法をしていますがもっと簡潔にできるなら簡潔にしたいと思っています。
どなたかお答え頂けると幸いです。よろしくお願いします。

Aベストアンサー

・両方のテーブルに同じデータが存在する場合(今の書き方)
SELECT (省略)
FROM Aテーブル INNER JOIN Bテーブル ON Aテーブル.勤務区分 = Bテーブル.勤務区分;

・Aテーブルの全レコードを抽出し、Bテーブルに対応するデータがある場合は、Bテーブルからもデータを牽く場合(これがやりたいこと)
SELECT (省略)
FROM Aテーブル LEFT JOIN Bテーブル ON Aテーブル.勤務区分 = Bテーブル.勤務区分;

・Bテーブルの全レコードを抽出し、Aテーブルに対応するデータがある場合は、Aテーブルからもデータを牽く場合(やりたいことの逆)
SELECT (省略)
FROM Aテーブル RIGHT JOIN Bテーブル ON Aテーブル.勤務区分 = Bテーブル.勤務区分;

QExcelの列と幅のミリ単位調整

パソコン歴は10数年あるのですが、もっぱら文章作成だけで、Excelは、ほとんど初心者です。
現在、10人分の名刺大の身分証明証をExcelで作成しているのですが、列と幅をミリ単位で調整する方法が分かりません。名刺のサイズは、横が90ミリ、縦が55ミリです。そして、印刷用紙には10面のマルチカードを使用しようと考えています。
ところが、「書式」の項目で「列と幅の調整」をクリックして表示される数字の単位がなんであるのかが分からず、悪戦苦闘しています。
どなたか、Excelの列と幅をミリ単位で調整できる方法をご教授願います。

Aベストアンサー

こんにちは。maruru01です。

Excelでセル幅・高さをmm単位で設定するための、マクロツールがいくつかありますので、紹介します。
なお、マクロなので自己責任でお願いします。

http://homepage2.nifty.com/housaka/

↑の「ものさしマクロ」

http://sky.freespace.jp/miko/file/freesoft.htm

↑のケインさんの「セル幅ミリ指定ツールVer.3」

参考URL:http://homepage2.nifty.com/housaka/,http://sky.freespace.jp/miko/file/freesoft.htm

QJOIN句への変換

はじめまして。
「*=」をJoin句に直したいのですが、同様の結果がえられません(T.T)
SQL初心者です、どうぞよろしくお願いいたします。

この式をJOIN句に直したいです。
FROM
A_TBL,
B_TBL as B_TBL01,
B_TBL as B_TBL02,
C_TBL,
D_TBL
WHERE
A_TBL.No = B_TBL01.No AND
A_TBL.No = B_TBL02.No AND
A_TBL.No = C_TBL.No AND
A_TBL.No *= D_TBL.No AND
C_TBL.ID *= D_TBL.ID AND

↓こうしたのですが、正しい結果がえられません。

FROM
(D_TBL
RIGHT OUTER JOIN C_TBL ON C_TBL.ID = D_TBL.ID)
RIGHT OUTER JOIN A_TBL INNER JOIN B_TBL AS B_TBL01 ON A_TBL.No = B_TBL01.No1.No
INNER JOIN B_TBL AS B_TBL02 ON A_TBL.No = B_TBL02.No2.No
ON A_TBL.No = D_TBL.No
AND A_TBL.No = C_TBL.No

どうぞ、ご教授お願いいたします。

はじめまして。
「*=」をJoin句に直したいのですが、同様の結果がえられません(T.T)
SQL初心者です、どうぞよろしくお願いいたします。

この式をJOIN句に直したいです。
FROM
A_TBL,
B_TBL as B_TBL01,
B_TBL as B_TBL02,
C_TBL,
D_TBL
WHERE
A_TBL.No = B_TBL01.No AND
A_TBL.No = B_TBL02.No AND
A_TBL.No = C_TBL.No AND
A_TBL.No *= D_TBL.No AND
C_TBL.ID *= D_TBL.ID AND

↓こうしたのですが、正しい結果がえられません。

FROM
(D_TBL
RIGHT OUTER JOIN C_TBL ON...続きを読む

Aベストアンサー

先にINNER JOIN してみては
FROM
A_TBL inner join B_TBL as B_TBL01 on A_TBL.No = B_TBL01.No
inner join B_TBL as B_TBL02 on A_TBL.No = B_TBL02.No
inner join C_TBL on A_TBL.No = C_TBL.No
left join D_TBL on A_TBL.No = D_TBL.No AND C_TBL.No = D_TBL.No


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報