質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

3回答

2030閲覧

複数のテーブルに当てはまる条件を求めcountしたい

yuu789

総合スコア14

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2018/03/16 02:04

AテーブルとBテーブルがあります。同じコード、例えば111のコードを持つ時の
Aテーブルの、aフィールドの値がBテーブルのbフィールドの値より小さい時の数を数えるといったことをしたいのですが、こういったことはできますか?

説明が下手で申し訳ありませんが、ご教授してくださるととても嬉しいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

あの後、当初書いてくださったこともあわせて見返してやってみたらできました!(喜
whereは一応書いてしまってたのですが、いらなかったですよね、書いてくださっていたのにすみません・・・

本当に色々ありがとうございます!!

投稿2018/03/20 10:52

yuu789

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

where句で条件に合致するものを抽出してカウントすればいいでしょう。

sql

1select A.CODE, Count(1) 2from tableA as A inner join tableB as B 3 on A.CODE = B.CODE 4where A.Afield < B.Bfield 5group by A.CODE;

追記

AテーブルとBテーブルの関係はどうなっているのでしょうか。それによっては希望の結果にならないかも。
一対多の関係ならいいですが、多対多だとすると、どのような結果がお望みなのか、不明瞭ですね。

実際のデータ例をだして、希望の結果を例示してもらえると回答しやすいです。

投稿2018/03/16 02:48

編集2018/03/16 05:08
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuu789

2018/03/16 05:43

回答いただいたのに返事が遅くなってしまい、申し訳ありません。 教えていただいた通りにやってみたら、無事できました!! 本当にありがとうございます。 お二人に回答していただき悩んだのですが、質問文に沿ったcountのやり方を教えてくださったのでベストアンサーにさせていただきました。 以前も、今回もいくら調べて考えても思いつかなかったことを解決してくださり本当に感謝です。
guest

0

条件に一致する場合を1として合計すれば良いかと思います。

SQL

1select A.CODE, sum(iif(A.Afield < B.Bfield, 1, 0)) as cnt 2from tableA as A inner join tableB as B 3 on A.CODE=B.CODE 4group by A.CODE

on A.CODE=B.CODEは結合条件なので、実際とは違うかもしれません

上記はすべてのデータの一覧なので、コードをピンポイントで指定した場合は、group byは不要です。

SQL

1select sum(iif(A.Afield < B.Bfield, 1, 0)) as cnt 2from tableA as A inner join tableB as B 3 on A.CODE=B.CODE 4where A.CODE=111

投稿2018/03/16 02:17

編集2018/03/16 03:30
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuu789

2018/03/16 05:45

回答いただいたのに返事が遅くなってしまい、申し訳ありません。 目から鱗でした。そういうやり方があるのですね! 丁寧に色々教えてくださって本当にありがとうございます。今回も、今後何かやる時のためにもすごく参考になりました。 本当にありがとうございます!!
sazi

2018/03/16 06:41

因みに、件数0件のものも取得したい場合は、こちらでの問い合わせになります。 (hatenaさんのは先に条件判定しているので)
yuu789

2018/03/17 12:12

そうなのですね!!sql,奥深いです・・・ saziさんが教えてくださった方法でやってみます。ありがとうございます!!
yuu789

2018/03/19 03:17

私のでやると、なぜかsum(iif•••はエラーになってしまうみたいだったので、countでやることにします汗 でも、色々教えてくださって本当にありがとうございます!
sazi

2018/03/19 08:12

どのようなSQLを作成していますか? 多分,が足りないとか括弧が少ないなどの文法エラーだと思いますけど。
yuu789

2018/03/20 02:20

SELECT sum(iif(A.Aフィールド)>([B].[Bフィールド]/2,1,0)) AS 名前 FROM Aテーブル AS A INNER JOIN Bテーブル AS B ON A.コード = B.コード WHERE (((A.フィールド)=1) AND ((A.Aフィールド)>([B].[Bフィールド])/2)) OR (((A.Aフィールド)>([B].[Bフィールド])/2) AND ((2)<>False)) GROUP BY A.コード というような形のsqlをつくっています。 はい、そのような構文エラーの表示が出るのですが、自分では何回見ても分からず・・・汗 すみません・・汗 こんなに色々教えてくださったり見てくださって・・
sazi

2018/03/20 02:47

以下括弧の位置がおかしいですね。 >sum(iif(A.Aフィールド)>([B].[Bフィールド]/2,1,0)) AS 名前 sum(iif(A.Aフィールド>([B].[Bフィールド]/2),1,0)) AS 名前 >(2)<>False この条件は何ですか?必ず真になりますけど。
yuu789

2018/03/20 03:08

本当にありがとうございます泣 全然分からなかったので、本当に感謝です。 後半は当初別の形にして書いていたのですが、sqlを実行してデザインビューになおして、それをまたsqlに変換して・・・と色々いじくりまわしていたらそういう形になっていたのでそれをそのまま使っていました。 一から見直してみます汗
yuu789

2018/03/20 18:05

あの後、言ってくださったことを見返しながらやってみたら結果がでてきました!! 良かったです。本当に色々ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問