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

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

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

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

5回答

1598閲覧

SQL 

DENQ

総合スコア19

Access

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

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/09/09 07:07

いつもお世話になっております。

ID FLG
123 0
123 0
123 1
123 1
456 1
456 1
456 1
456 1
456 1
789 0
789 0
798 1
789 1
321
321 1
321 0
654 1
654 1
654 1

上記のテーブル構成で削除フラグが0を持たないIDを取得したいです。

欲しい結果
456
ご教授よろしくお願いします。

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

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

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

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

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

takyafumin

2016/09/09 07:18

提示されているデータですと、「798」, 「654」も抽出対象となりますか? / FLGが持てる値は「0」「1」「null」のみですか?
DENQ

2016/09/09 07:26

すみません。798と654もでした。追記するのを忘れていました。
takyafumin

2016/09/09 07:31

>798と654もでした。 承知しました。回答を待たず、となってしまいましたが回答してみましたのでご確認ください。
guest

回答5

0

「集合」で考えると整理しやすいかと思います。
下記2つの集合の差が期待する結果になるかと思います。

  • 全体のIDの重複なし 集合
  • FLG=0 集合

重複なし集合はdistinctを利用することで抽出可能です。
FLG=0集合はwhere句で指定することで抽出可能です。
差は外部結合にて片方がnullレコードとなるものを抽出するか、NOT EXISTSを利用することで抽出可能です。

なお、そのままの回答(SQL)は回答するつもりはありません。

投稿2016/09/09 07:14

takyafumin

総合スコア2335

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

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

0

普通にやればこうですが、accessは普通では無いのでできるかどうかわかりません

SQL

1select id from tbl group by id 2having sum(FLG=0)=0 ; 3

投稿2016/09/09 07:44

yambejp

総合スコア114769

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

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

0

ベストアンサー

FLGがnull, 0, 1の場合

SELECT ID FROM test GROUP BY ID HAVING SUM(FLG) = COUNT(FLG)

http://sqlfiddle.com/#!9/9fafb/1

投稿2016/09/09 07:13

編集2016/09/09 07:38
aglkjggg

総合スコア769

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

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

DENQ

2016/09/09 07:27

これだと0の値を持つIDも検出されませんか?
DENQ

2016/09/09 07:51

ありがとうございます。無事に欲しい値が取得できました。
guest

0

sql

1select ID from (select ID, min(FLG) as flg from table group by ID) where flg = 1;

投稿2016/09/09 07:12

pinpikokun

総合スコア376

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

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

DENQ

2016/09/09 07:27

自分のSQLで試しましたがFLGが循環しているとエラーがでました。
guest

0

IDでグループした後、HAVINGでflg=0の合計数が0の行だけに絞り込むなど

HAVING SUM(CASE WHEN FLG=0 THEN 1 ELSE 0 END) = 0
Nullも省きたいとか、1だけをとかの場合は条件を調節してください。

投稿2016/09/09 08:46

hirohiro

総合スコア2068

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問