【Access 2013 VBA / SQL】
[親Table]
*ID1
*日付
*受注元会社名
{子Table ]
*ID2(主キー)
*ID1(親テーブルのID)
*ID3(外部キー)
[Table B]
*ID3
*会社名
------------------------------
ID2 ID1 会社ID
------------------------------
1 1 A
2 1 B
3 1 B
4 1 C
5 2 B
6 2 A
7 2 A
------------------------------
ID1=1のもので、会社IDを一意にして選択した会社名を表示したい
この時、SQLでどのように書けばよいでしょうか
No.3ベストアンサー
- 回答日時:
会社名だけならもっとシンプルに出せるかと思います。
SELECT [Table B].会社名
FROM [Table B]
WHERE EXISTS (
SELECT 0
FROM [子Table]
WHERE [子Table].ID3 = [Table B].ID3
AND [子Table].ID1 = 1
);
この回答への補足
SELECT [Table B].会社ID, [Table B].会社名
FROM [Table B]
WHERE EXISTS (
SELECT 0
FROM [子Table]
WHERE [子Table].ID3 = [Table B].ID3
AND [子Table].ID1 = 1
);
教えて頂いたSELECT文に、会社IDも追加してみたらうまく出来ました。これなら、コンボボックスにも使えそうです。
ありがとうございました。
このselect 0 from tablename は、ネットで調べたら、where句の条件に合致するレコードが存在するかどうかを調べるときに使うとかいてありました。
この戻り値は、レコードがある場合、0になるのでしょうか。それとも、1?
レコードがない場合には、Nullでしょうか?
No.5
- 回答日時:
#1、#2です
#2のGroupbyは、2番目をMAXかMINで囲む前提です。
ルールがわからないので、どちらかお好きな方でどうぞ
ありがとうございます。
教えて頂いた例を使って見たのですが、max( 会社ID)でくくると、そのレコード数が出てきたような・・・違いますか。3が出たのですが、この数字の意味が良くわかりません。レコードは、全部で5ですので。つまり、会社IDで一番多いIDの数がとれたということでしょうか・・・
私がしたいことは重複した会社IDを一意にすることなので、この方法はそれとは違いますが、でも、勉強にはなりました。
No.4
- 回答日時:
> この戻り値は、レコードがある場合、0になるのでしょうか。
> それとも、1?
『SELECT 0 … の戻り値』としては当然 0 です。
『EXISTS(SELECT 0 … の戻り値』は、レコードが存在すれば
TRUE が返ります。
> レコードがない場合には、Nullでしょうか?
『SELECT 0 … の戻り値』は、レコードがない場合は何も返っ
てきません。それは『SELECT 会社名 FROM [Table B]; で、
1件も取得できなかった場合に、会社名 には何が入るのでしょう
か?』という質問と同じで、意味がありません。
レコードが取得できなかったのですから、Null ですらありません。
『EXISTS(SELECT 0 … の戻り値』は、レコードが存在しな
ければ FALSE が返ります。
EXISTS は『EXISTS 以下のSELECT 文の結果が存在するか
否か』で判別しますので、EXISTS 内の SELECT 句の内容は
何を指定しても OK です。
EXISTS (SELECT * … でも EXISTS (SELECT Null … でも
EXISTS (SELECT 'I need you(はぁと)' … でも。
# 私は、コーディング規約で特に規定されていない限り、
# 「なんとなく」ゼロを使うことが多いです。
ご回答ありがとうございます。
Select 0 の戻り値が、0になり、存在しない場合には、
Rst.EOF = true and Rst.BOF = true
となるという事なのでしょうね。
No.2
- 回答日時:
#1、エラーだらけだ。
ごめんなさい。Select distinct tblA.ID1, tblC.[会社ID]
From [親テーブル] tblA, [子テーブル] tblC, [Table B] tblB
Where tblA.ID1 = tblC.ID1 and tblC.ID3 = tblB.ID3
And tblA.ID1 = 1;
group by なら
Select tblA.ID1, tblC.[会社ID]
From [親テーブル] tblA, [子テーブル] tblC, [Table B] tblB
Where tblA.ID1 = tblC.ID1 and tblC.ID3 = tblB.ID3
And tblA.ID1 = 1
Group by tblA.ID1
;
会社IDを強制的にひとつにするならGroupbyにして
tblC.[会社ID]をMax()かMIN()で囲うとか
ありがとうございます。
Select distinct tblA.ID1, tblC.[会社ID]
From [親テーブル] tblA, [子テーブル] tblC, [Table B] tblB
Where tblA.ID1 = tblC.ID1 and tblC.ID3 = tblB.ID3
And tblA.ID1 = 1;
こちらの例をもとに、うまく出来ました。
2個目の例は
select distinct [TblA].[依頼ID],
[TblC].[会社ID],
[TblB].[会社ID]
from [依頼テーブルA] as [TblA],
[分析管理テーブルC] as [TblC],
[会社管理テーブルB] as [TblB]
where
[TblA].[依頼ID]=[TblC].[依頼ID]
And [TblC].[会社ID]=[TblB].[会社ID]
And [TblA].[依頼ID] = 1
Group by [TblC].[会社ID]
このようにしたのですが、
「クエリに、集計関数の一部として指定された式「依頼ID」が含まれていません。」
というエラーになります。
No.1
- 回答日時:
また属性が書かれてないが、親テーブルのIDは数値型と仮定
欲しいのは「会社名」だろうが、
会社IDはABCって「揺らぎ」なんてレベルじゃないけど
そこらへんは適宜修正してください
Select distinct tblA.ID, tblB.会社名
From [親Table] tblA, [子Table] tblC, [Table B] tblB
Where tblA.ID1 = tblC.ID2 and tblC.ID3 = tblB.ID2
and tblA.ID = 1
;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
(VBA)エクセルからアクセ...
-
Accessの固有レコード識別子の選択
-
ACCESSにて全項目(レポート)...
-
PostgreSQLへのODBC接続について
-
(ACCESS)並び替えをしないで...
-
Excel→Accessテーブル インポ...
-
Accessで重複したデータを一件...
-
ManagementStudioからのデータ削除
-
「マスタ」と「テーブル」の違...
-
ACCESS2007 フォーム 「バリア...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ビューで引数を使いたい
-
Access VBA 読み取り専用かチェ...
-
アクセス 日付抽出(年月のみ)...
-
ユニオンクエリで繋げられるテ...
-
トランザクション中にSELECTし...
-
Inner join と Left joinの明...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
3つ以上のテーブルをUNIONする...
-
Access VBA Me.Requery レコー...
-
数百万件レコードのdelete
-
Access 1レコードずつcsvで出力...
-
Access カレントレコードがあり...
-
ACCESSのBookmarkプロパティの...
-
Access 削除クエリが重い
-
2つの項目が重複するレコード...
-
非連結サブフォームのレコード...
-
ManagementStudioからのデータ削除
-
Accessで重複したデータを一件...
-
フォームからのレコード削除に...
-
ACCESSにて全項目(レポート)...
-
Accessの重複クエリで最小以外...
-
SQLServerで同一条件レコードの...
-
(ACCESS)並び替えをしないで...
-
テーブルのレコード削除ができ...
-
Accessでの排他制御
おすすめ情報