アクセスのSQLで

解決


てぇしぃ  2005-06-28 22:06:52  No: 90727

アクセス2000の質問です。VBとは関係ないかもしれませんが、一応VBから制御するということでお願いします。2つテーブルがあり、Aテーブルには  ID ,Aコード  というフィールド。Bテーブルには  ID ,Bコード  というフィールドがあります。
IDでAテーブルとBテーブルがリンクされています。Aコード、Bコードともに文字列型です。IIF関数を使用してAコードが空白(NUll?)の場合にはBコードの値を表示するようにし,Aコードに何らかの値が入力されている場合はそのまま表示したいのです。
IIf([Aテーブル.Aコード] Is Null,[Bテーブル.Bコード],[Aテーブル.Aコード]))
としてみましたが、Aコードが空白の行だけが抽出されません。Is Nullの部分を="" としてみても結果は同じでした。
どうすればよいのでしょうか?


しなこ  2005-06-28 23:06:02  No: 90728

IIf(IsNull([Aテーブル.Aコード])=True,[Bテーブル.Bコード],[Aテーブル.Aコード]))
って書いてみてはどうでしょう?


てぇしぃ  2005-06-28 23:14:36  No: 90729

しなこさんありがとうございます。しかし残念ながら同じ結果になってしまいました。


いな  2005-06-28 23:17:20  No: 90730

>VBとは関係ないかもしれませんが
かも、ではなく。今回の質問でいうならば全く関係ありません。
#一応、関係あるかもぉ〜、
#なんて誤解している可能性があるので念のためお断り

んでもって、さてと

>IIF関数を使用してAコードが空白(NUll?)の場合には
>Bコードの値を表示するようにし,
>Aコードに何らかの値が入力されている場合はそのまま表示したいのです。

IIf(ISNULL([Aテーブル.Aコード]),[Bテーブル.Bコード],[Aテーブル.Aコード]))

でわ?


いな  2005-06-28 23:19:27  No: 90731

既に試されていたか...

じゃ、Trim付けてみよう!

IIf(ISNULL(Trim([Aテーブル.Aコード])),[Bテーブル.Bコード],[Aテーブル.Aコード]))


てぇしぃ  2005-06-28 23:40:02  No: 90732

いなさんもありがとうございました。結果は同じでした。
1つ気になったのですが、
Aテーブル                    Bテーブル  
ID:1 Aコード:"001"        ID:1 Bコード:"ABC"
ID:2 Aコード:"001"        ID:2 Bコード:"CVT"
ID:3 Aコード:"002"        ID:3 Bコード:"ABC"
                            ID:4 Bコード:"ZZZ"

という感じでBにはあってAにはないIDが存在するのでうまく抽出できないのかもしれないと思ったりもします・・・・


しなこ  2005-06-29 00:06:35  No: 90733

IDフィールドのリンクの張り方が違うのでは?

SELECT IIf([Aテーブル]![AID]="",[Bテーブル]![Bコード],[Aテーブル]![Aコード]) AS A
FROM Aテーブル RIGHT JOIN Bテーブル ON Aテーブル.AID = Bテーブル.BID;

こんなかんじでいかがでしょう?


てぇしぃ  2005-06-29 00:29:39  No: 90734

しなこさんの言うとおりにリンク付けはしてあります。
でもうまくいきません。抽出条件をなしにするとちゃんと全てのデータが表示されますのでリンクの仕方に問題はないと思います。

やはりAコード、Bコードが文字列型だということが問題なのでしょうか?


もげ  2005-06-29 00:53:27  No: 90735

貴殿がどういうSQLを書いているのかよくわかりませんが、

SELECT テーブルA.Aコード, テーブルB.Bコード, 
IIf([テーブルA].[Aコード] Is Null,[テーブルB].[Bコード],[テーブルA].[Aコード]) AS 式1
FROM テーブルA
 INNER JOIN テーブルB ON テーブルA.ID = テーブルB.ID;

と仮定して、

式1のところに、AコードがNullの場合だけBコードが表示されてればよいのでは?
であれば、抽出条件は関係ないですし、A、Bコードが文字列型でも関係ないし。
どうでしょう?


てぇしぃ  2005-06-29 01:00:07  No: 90736

>もげさん  しなこさん、いなさん
ありがとうございます。簡単な問題でして、恥ずかしいのですが抽出条件の所に記入せずに式1のところに記入するんでした・・・ほんとありがとうございます。勉強しなおして精進しますだす。


てぇしぃ  2005-06-29 01:00:27  No: 90737

解決っす


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加