初心者のFileMaker pro Q&A

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

ログインしていません。

アナウンス

Claris FileMaker Pro 19 ヘルプ
新しい質問は、新規トピック から投稿して下さい。


#1 2022-01-14 14:48:08

スナフキン
メンバー

[解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

Windows10 / filemaker14

とあるテーブルに、ID、氏名、予約日が入っています。
同一IDで予約が何度も入っているのですが、分析として、ユニークなIDで、一番若い日付のみの抽出をしたいと思っているのですが方法がわかりません。
良いアドバイスをいただければと思います。

オフライン

#2 2022-01-14 14:55:08

Shin
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

予約日の最小を求める集計フィールドをつくっておきます。
IDをキーとする小計パートのみ(IDと上の集計フィールドを配置)のレイアウトを作り、そこでIDでソートすればいいでしょう。

オフライン

#3 2022-01-14 15:50:16

チポ
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

ん?
次の予約日を知りたいのではないかな?

ならば、
Case ( 予約日 >= 本日 ; 予約日 )
この計算フィールドを作り、
あとはShinさんの方法でいいでしょう。

そのレコードを見たい。
だと他の方法ですね。

オフライン

#4 2022-01-14 15:53:05

スナフキン
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

Shin様

早速ありがとうございます。

すみません、私には難しく、できませんでした。。
集計フィールドを作成(繰り返しの集計:全体)するのはわかるのですが、IDをキーとする、、というところからわかりません。
自己リレーション(リレーション上に同テーブルを2個配置してIDをくっつける)を行う?
新しいレイアウトには何を入れればよいのでしょうか?


Shin さんの発言:

予約日の最小を求める集計フィールドをつくっておきます。
IDをキーとする小計パートのみ(IDと上の集計フィールドを配置)のレイアウトを作り、そこでIDでソートすればいいでしょう。

オフライン

#5 2022-01-14 15:55:23

スナフキン
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

チポさん

最終予約日を知りたいのです。
結果として、ユニークID、最終予約日がほしいです。
このテーブルは重複しているので、重複分を取り除いた分ですね。


チポ さんの発言:

ん?
次の予約日を知りたいのではないかな?

ならば、
Case ( 予約日 >= 本日 ; 予約日 )
この計算フィールドを作り、
あとはShinさんの方法でいいでしょう。

そのレコードを見たい。
だと他の方法ですね。

オフライン

#6 2022-01-14 16:15:32

Shin
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

最終予約日は若い日とは言いませんよ。
最終ならば、集計は、最大になります。

IDをキーとする小計パート は、レイアウトモードでパートの編集を行い、小計パートのみを作り、その小計パートのキーがIDということです。集計機能を使うなら、リレーションはつかわなくてもいいですよ。

オフライン

#7 2022-01-14 16:41:05

スナフキン
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

すみません、若いとは、本日から一番近い日、ということで若いと表現しました。
古いとは、それ以前ですね。

確かにパート定義をボディから小計にしました。項目をIDに選択しました。
そこにIDと予約日を載せてプレビューすると、何も表示されません。。
なにかおかしいでしょうか。。


Shin さんの発言:

最終予約日は若い日とは言いませんよ。
最終ならば、集計は、最大になります。

IDをキーとする小計パート は、レイアウトモードでパートの編集を行い、小計パートのみを作り、その小計パートのキーがIDということです。集計機能を使うなら、リレーションはつかわなくてもいいですよ。

オフライン

#8 2022-01-14 17:03:21

チポ
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

> 最終予約日を知りたい
> 若いとは、本日から一番近い日
次の予約日
でいいんですよね?

ひとつのIDで、未来の予約日は複数あるのでしょうか?
ひとつなら、予約日の最大を求めればいいですね。

複数あるのなら、わたくしの最初のレスでいいですよ。


小計パートは、そのソート対象フィールドでソートしないと表示されません

オフライン

#9 2022-01-14 17:37:17

スナフキン
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

そうです、次の予約日です。一つのみです。
他は履歴があるのみです。
その履歴が邪魔なので、最終予約日のみの重複しないIDのレコード群がほしいです。

うーん、小計パートの扱い方がどうしてもわかりません。。
もう一歩なのですが。。


チポ さんの発言:

> 最終予約日を知りたい
> 若いとは、本日から一番近い日
次の予約日
でいいんですよね?

ひとつのIDで、未来の予約日は複数あるのでしょうか?
ひとつなら、予約日の最大を求めればいいですね。

複数あるのなら、わたくしの最初のレスでいいですよ。


小計パートは、そのソート対象フィールドでソートしないと表示されません

オフライン

#10 2022-01-14 19:23:24

himadanee
ゲストユーザー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

#2のShinさんの回答で、実行する前に未来の日付だけ検索しておけばいいのでは。

#11 2022-01-15 08:51:49

Shin
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

そこでIDでソートすればいいでしょう。

> ユニークID、最終予約日がほしいです。
未来の予約日なのですか。

オフライン

#12 2022-01-15 11:00:57

himadanee
ゲストユーザー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

そうです、次の予約日です。一つのみです。
他は履歴があるのみです。
その履歴が邪魔なので、最終予約日のみの重複しないIDのレコード群がほしいです。

あれ、過去の予約履歴が邪魔なだけで未来の予約はIDごとに1件しか登録してないなら、単に未来のレコードを検索するだけでいいですね。(重複しようがない)
集計も計算も必要ありません。
最終とか若いとかいうから紛らわしくなるのでは。

「次の予約日」でなく過去のもの(履歴)でもIDごとの「最終」だけは必要なら、集計レイアウトとかリレーションで最大値を参照とかになりますが...

#13 2022-01-17 09:41:21

スナフキン
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

皆様

申し訳ございません。
せっかくご回答頂いているに、私の説明不足です。。
以下の表があります
ID 氏名 予約日
1    山田 2020.1.1
1    山田 2021.1.1
1    山田 2022.1.1
2    田中 2021.12.1
2    田中 2022.1.10
・・・

という表があり、
1    山田 2022.1.1
2    田中 2022.1.10
という結果を表示させたいです。
ID重複無し、本日に一番近い日のみを抽出したいです。
こういうのが10万件ほどありまして、、

オフライン

#14 2022-01-17 09:59:40

チポ
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

> ID重複無し、本日に一番近い日のみを抽出したい
未来の?
過去も含めて?
どちらでしょう?

過去も含めての場合、
例えば、昨日と明日があった場合どちら?

オフライン

#15 2022-01-17 10:03:12

スナフキン
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

未来も含め、一番新しい日です。
昨日と今日でしたら、今日のみです。

ちなみに小計パートは使いかたが全くわかりませんので、できましたらそれ以外の方法はありますでしょうか?


チポ さんの発言:

> ID重複無し、本日に一番近い日のみを抽出したい
未来の?
過去も含めて?
どちらでしょう?

過去も含めての場合、
例えば、昨日と明日があった場合どちら?

オフライン

#16 2022-01-17 10:09:59

チポ
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

未来の直近の予約日
なら、、

IDがユニークな顧客(?)マスタのようなテーブルがありませんか?
なければそれを作って、
計算・グローバルフィールドを作り、本日を入力します
リレーション
  ID = ID
  and
  グローバルフィールド<= 予約日
                                      予約日の降順でソート指定
これでマスタのレイアウトに
  ::予約日
等を配置。
これでいいでしょう。

未来の予約日が複数あっても大丈夫です。


マスタを作る場合、
IDフィールドを入力値の制限で
  ユニーク・常時
と設定しておいて、
元のテーブルをインポートすればいいでしょう。

オフライン

#17 2022-01-17 10:53:50

Shin
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

一応、集計機能で表示する手順を書いておきます。

集計フィールドを作り、予約日の最大を求めるように設定します。
レイアウトモードにして、新しいレイアウトをつくります。パートの設定を開き、ボディーを小計パートへ変更、IDをキーとする設定に変更します。
その小計パートに、IDと上の集計フィールドを配置します。
ブラウズモードにして、作ったそのレイアウトで表示して、リスト表示にします。その上で、IDでソートすればいいでしょう。

編集者 Shin (2022-01-17 11:02:03)

オフライン

#18 2022-01-17 11:14:25

himadanee
ゲストユーザー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

例に挙げてるのか過去の日付ばかりなので、「未来の直近の予約日」ではなく、単にIDごとに一番最後の日付ということでは。

「本日に一番近い日」と言ってるので、過去と未来があった場合にどっちが近いか判断しないといけないように聞こえますが...

#19 2022-01-18 13:43:25

スナフキン
メンバー

Re: [解決] 複数の重複するレコードから、日付の若いもののみ抽出したい

皆様

ご回答ありがとうございます。
様々なヒントを得て、なんとかできました。

予約日テーブル(ID,氏名,予約日)と、顧客テーブル(ID.氏名)でリレーションを張り、リレーションのオプションで、予約日を降順でソート。
その後、顧客テーブル指定のレイアウトを作成し、ID、予約日テーブルの予約日を持ってきたら、IDユニークな最終予約日のみ表示のレイアウトができました。

小計テーブル等アイデアをいただきましたので、後学とさせていただきます。

本当にありがとうございました。

オフライン

クィック投稿

メッセージを書いて送信してください。
登録の確認

実在の人物による登録であることを確認します。

Board footer