匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

SQL(Access使用)で下記のような事を実現したいのですが、コードが書けません。


名簿というテーブルに、電話番号の列をleftjoinしたいのですが、
名簿の携帯電話の列(携帯)に○が入っていれば、携帯電話のテーブルを参照し、
名簿の固定電話の列(固定)に○が入っていれば、固定電話のテーブルを参照し、
という条件でleftouterjoinを行い、
電話番号を引っ張ってきて、特定の1列に入れていきたいのです。

ちなみに、携帯と固定を両方保持している人はいない前提で構いません。

下記のように考えたのですが…当然有効ではありません。



SELECT 名簿.*,固定電話.電話番号
from 名簿
where 固定="○"
left outer join
固定電話
on 名簿.ID=固定電話.ID

union

SELECT 名簿.*,携帯電話.電話番号
from 名簿
where 携帯="○"
left outer join
携帯電話
on 名簿.ID=携帯電話.ID

何かいい方法はないでしょうか?

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/01/22 18:41:47
  • 終了:2013/01/23 15:02:32

ベストアンサー

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2013/01/22 18:57:39

いくつか考えてみた。動かしてないけどね。
名簿.固定="○"の判定を先にやってるから両方持ってる場合は固定のほうになるよ。

SELECT 名簿.*, IIF( 名簿.固定="○", 固定電話.電話番号, IIF( 名簿.携帯="○", 携帯電話.電話番号, "" ) ) AS 電話番号
FROM (名簿
LEFT JOIN 固定電話 ON 固定電話.ID = 名簿.ID)
LEFT JOIN 携帯電話 ON 携帯電話.ID = 名簿.ID
SELECT *, IIF( 固定="○", DLOOKUP("電話番号", "固定電話", "ID=" & ID ), IIF( 携帯="○", DLOOKUP("電話番号", "携帯電話", "ID=" & ID ), "" ) ) AS 電話番号
FROM 名簿
匿名回答1号

回答のほう手直ししてます。

2013/01/22 21:29:00
匿名質問者

遅くなってごめんなさい!そしてありがとうございます。
上のコードをやってみました。で、うまくいきました!
しかし、コードを見てもなんとなくはわかるけど、
どうしてこれで動くのかはっきりと理解はできない…
というレベルなので、追々勉強しなきゃ!
色々なアイデアをくれてありがとうございます。
DLOOKUPもこれから勉強します!

2013/01/23 15:02:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません