初心者のFileMaker pro Q&A (旧掲示板)

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

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

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-03-25 11:03:16

konan
Guest

別テーブルに合わせたソート

料理DBと材料DBのテーブルがあります。
材料DBのレコード順を料理DBの材料名順にソートしたいと希望があるのですが、そのような事は可能でしょうか。
レコード数は同じです。

料理DB
料理No  商品名  材料名
121    カレー    牛肉
122    カレー    牛肉   
123    カレー    牛肉
124    寿司     マグロ     
125    寿司     マグロ
126    餃子     豚肉

材料DB(ソート前)
材料No        材料名       
501          マグロ 
502          牛肉 
503          マグロ 
504          豚肉
505          牛肉
506          牛肉

(料理DBの材料名順にソート後)
材料No        材料名       
502          牛肉
505          牛肉
506          牛肉
501          マグロ 
503          マグロ 
504          豚肉

FMとGoのバージョンは12です。
お願いいたします。

#2 2016-03-25 14:01:00

tim
Guest

Re: 別テーブルに合わせたソート

材料名順にソートしたい、だったら材料名でソートすればいいです。
実際は料理No順にソートじゃないですか?
例の通りだとすると、同じ材料名の料理が複数あるんで無理かもしれない。

#3 2016-03-25 16:40:50

konan
Guest

Re: 別テーブルに合わせたソート

tim wrote:

材料名順にソートしたい、だったら材料名でソートすればいいです。
実際は料理No順にソートじゃないですか?
例の通りだとすると、同じ材料名の料理が複数あるんで無理かもしれない。

例の通り(料理DBの材料名順にソート後)が必要です。
難しいのでしょうか?

#4 2016-03-25 17:07:46

tim
Guest

Re: 別テーブルに合わせたソート

各材料がどの料理に属するかの情報があるのでは。
料理の1行目がマグロだったらどうしますか。

ソートしたい値をルックアップすればできると思います。

#5 2016-03-26 11:42:28

チポ
Member

Re: 別テーブルに合わせたソート

挙げられた例の通りを条件に、、

材料DBと料理DBを材料名でリレーション
材料DBで順位用のフィールドを作り、料理DB::料理NOをルックアップ。

このフィールドでソートすればご希望の並び順になりますね。


しかし、
両方のレコード数が同じとなっていますが、
そうならひとつのテーブルで良さそうですが。。

Offline

#6 2016-03-28 11:54:27

konan
Guest

Re: 別テーブルに合わせたソート

ルックアップ後ソートすると数が合わないので調べると、料理DBに同じ材料が繰り返し出てくる事が分かりました。
テーブルを分けたのはEXCELをインポートしているのでやり易いと思ったためです。
材料DBのレコード順を料理DBの材料名順にソートできるのであれば、ひとつのテーブルにしてもかまいません。
宜しくお願いします。

料理DBと材料DBのテーブルがあります。
材料DBのレコード順を料理DBの材料名順にソートしたいです。
レコード数は同じです。
料理DB
料理No  商品名    材料名
121    カレー      牛肉
122    カレー      牛肉   
123    カレー      牛肉
124    寿司       マグロ     
125    寿司       マグロ
126    餃子       豚肉
127   さしみ     マグロ
128   すき焼     牛肉
129   いため     豚肉

材料DB(ソート前)
材料No        材料名       
501          マグロ 
502          牛肉 
503          マグロ 
504          豚肉
505          牛肉
506          牛肉
507          豚肉
508          マグロ
509          牛肉

(料理DBの材料名順にソート後)
材料No        材料名       
502          牛肉
505          牛肉
506          牛肉
501          マグロ 
503          マグロ 
504          豚肉
508         マグロ
509          牛肉
507          豚肉

以上

#7 2016-03-28 13:24:47

チポ
Member

Re: 別テーブルに合わせたソート

やはりそう言うのが有りましたか。。

そう思って、
例の通りと条件を付けたんですが、
書かれた通りだと、

  牛肉1
  牛肉2
  牛肉3
のような、材料に順番を付けたフィールドを両方のテーブルに作り、
それでリレーションして、料理NOをルックアップ、それでソート。

で出来ますね。


> 材料DBのレコード順を料理DBの材料名順にソートできるのであれば、ひとつのテーブルにしてもかまいません
ひとつにするのなら、料理DBだけにするでしょう。

Offline

#8 2016-03-28 14:41:49

scripter
Guest

Re: 別テーブルに合わせたソート

たぶん例が悪いんで、普通は1つの料理に複数の材料があるものだと思うんですが。

#9 2016-03-28 15:11:40

konan
Guest

Re: 別テーブルに合わせたソート

チポ wrote:

やはりそう言うのが有りましたか。。

そう思って、
例の通りと条件を付けたんですが、
書かれた通りだと、

  牛肉1
  牛肉2
  牛肉3
のような、材料に順番を付けたフィールドを両方のテーブルに作り、
それでリレーションして、料理NOをルックアップ、それでソート。

で出来ますね。


> 材料DBのレコード順を料理DBの材料名順にソートできるのであれば、ひとつのテーブルにしてもかまいません
ひとつにするのなら、料理DBだけにするでしょう。

牛肉1
牛肉2
牛肉3
を付けるのに計算式などでできるでしょうか。
毎朝EXCELから料理と材料に各500レコード分を取り込んでおります。
毎日の事なので手間がかかるので。
例題が悪くて申し訳ありません。
今回は材料名1フィールドのみです。
宜しくお願いします。

#10 2016-03-28 16:16:17

チポ
Member

Re: 別テーブルに合わせたソート

材料DBで自己リレーション
  材料名 = 材料名
  and
  材料No >= 材料No
として、
計算フィールド
  材料名 & Count ( 自己リレーション:: 材料名 )
で求められます。

料理DBでも同様の考え方でいいのですが、
計算フィールドとすると、索引非保存となり、関連側の照合フィールドと出来ません。
全置換等での入力を考えてください。

インポートからソートまでの一連の作業はスクリプトにしてボタンクリック1回で完了できます。


やっぱり1テーブルがお薦めです。。

Offline

#11 2016-03-29 11:24:32

konan
Guest

Re: 別テーブルに合わせたソート

チポ wrote:

材料DBで自己リレーション
  材料名 = 材料名
  and
  材料No >= 材料No
として、
計算フィールド
  材料名 & Count ( 自己リレーション:: 材料名 )
で求められます。

料理DBでも同様の考え方でいいのですが、
計算フィールドとすると、索引非保存となり、関連側の照合フィールドと出来ません。
全置換等での入力を考えてください。

インポートからソートまでの一連の作業はスクリプトにしてボタンクリック1回で完了できます。


やっぱり1テーブルがお薦めです。。

牛肉1
牛肉2
牛肉3
になりません。
牛肉3
牛肉3
牛肉3
と材料名の合計数になります。
料理DBも同じですが、どこが間違っているのでしょうか。
それと全置換等の入力が分かりません。

1テーブルがお薦めとのことですが、この作業が簡単になるのでしょうか。
料理DBに材料DBのフィールドを追加し、料理と材料は別レコードで良いのでしょうか。
宜しくお願いします。

#12 2016-03-29 11:57:54

チポ
Member

Re: 別テーブルに合わせたソート

自己リレーションが

材料DBで自己リレーション
  材料名 = 材料名
  and
  材料No >= 材料No

こうなっていますか?


インポート元のファイル、
テーブル構成等分らないので何とも言えませんが、
例を見る限り、
現在の料理DBに材料Noフィールドを加えればいいことになりますよね。

Offline

#13 2016-03-29 13:42:40

konan
Guest

Re: 別テーブルに合わせたソート

チポ wrote:

自己リレーションが

材料DBで自己リレーション
  材料名 = 材料名
  and
  材料No >= 材料No

こうなっていますか?


インポート元のファイル、
テーブル構成等分らないので何とも言えませんが、
例を見る限り、
現在の料理DBに材料Noフィールドを加えればいいことになりますよね。

自己リレーションは材料DBのテーブルをコピーし左に材料DB、右に材料DB2を置き
材料名 = 材料名
  and
材料No >= 材料No
としています。
材料順番は 計算で 材料名&"_"&Count(材料DB2::材料名)   としています。

材料名は計算で Middle(〇〇:11;12) で値を作成していますが、これが影響しているのでしょうか?

#14 2016-03-29 13:54:45

チポ
Member

Re: 別テーブルに合わせたソート

設定に間違いはなさそうですが、、

試しに、
材料DBのレイアウトに材料DB2のポータルを置いてみて、
照合に間違いが無いか確かめてみたらいかがでしょう。

レコード自身と、レコード自身より材料Noが小さいレコードが表示されていなければなりません。

Offline

#15 2016-03-29 16:00:57

konan
Guest

Re: 別テーブルに合わせたソート

チポ wrote:

設定に間違いはなさそうですが、、

試しに、
材料DBのレイアウトに材料DB2のポータルを置いてみて、
照合に間違いが無いか確かめてみたらいかがでしょう。

レコード自身と、レコード自身より材料Noが小さいレコードが表示されていなければなりません。

こちらの内容が理解できず、再度DBのサンプルを作成し確認しました。
結果、材料DBは順位付ができましたが、料理DBは駄目でした。
この原因はなんでしょうか。
何度も申し訳ありません。

1.料理DBと材料DBは材料名でリレーション

2.材料DB
自己リレーションし
材料DBと材料DB2
材料名 = 材料名
AND
材料No >= 材料No

501       マグロ     マグロ1
502       牛肉       牛肉1
503       マグロ     マグロ2
504       豚肉       豚肉1
505       牛肉       牛肉2
506       牛肉       牛肉3


3.料理DB
自己リレーションし
料理DB2と料理DB
材料名 = 材料名
AND
材料No <= 材料No

121        カレー   牛肉3
122        カレー   牛肉3
123        カレー   牛肉3
124        寿司     マグロ2
125        寿司     マグロ2
126        餃子     豚肉1

#16 2016-03-29 16:25:28

チポ
Member

Re: 別テーブルに合わせたソート

1.料理DBと材料DBは材料名でリレーション

ここでは特に必要ないですね


3.料理DB
自己リレーションし
料理DB2と料理DB
材料名 = 材料名
AND
材料No <= 材料No

料理DBに料理Noが有るのですか?


リレーションを考える時、
常に左を照合する側、右を関連側
リレーションシップグラフでも、ここでの説明でもそう統一することをお勧めしますよ。
逆にすると混乱の元です。

Offline

#17 2016-03-30 09:26:54

konan
Guest

Re: 別テーブルに合わせたソート

料理DBの材料名順に材料DBの材料を並び替えしたいので料理DBに材料順位Noが必要と思っていました。
当然ですが、どちらも各材料名と数が同じで、毎日500レコード発生します。

料理DB
料理No  商品名    材料名
121    カレー      牛肉
122    カレー      牛肉   
123    カレー      牛肉
124    寿司       マグロ     
125    寿司       マグロ
126    餃子       豚肉
127   さしみ     マグロ
128   すき焼     牛肉
129   いため     豚肉

材料DB・・・EXCELからインポートした時点ではバラバラです
材料No        材料名       
501          マグロ 
502          牛肉 
503          マグロ 
504          豚肉
505          牛肉
506          牛肉
507          豚肉
508          マグロ
509          牛肉

材料DB・・・料理DBの材料順に並び替え(希望する順番です)
材料No        材料名       
502          牛肉
505          牛肉
506          牛肉
501          マグロ 
503          マグロ 
504          豚肉
508         マグロ
509          牛肉
507          豚肉

#18 2016-03-30 09:43:35

チポ
Member

Re: 別テーブルに合わせたソート

料理DBで料理No順に並んでいる材料名順に、
材料DBのレコードを並び替えたい。

ですから、
材料DBで同じ材料名の料理DB::料理Noを得て、それでソート
を目的としています。

その方法は私の前記の通りです。

Offline

#19 2016-03-30 10:45:30

konan
Guest

Re: 別テーブルに合わせたソート

チポ wrote:

料理DBで料理No順に並んでいる材料名順に、
材料DBのレコードを並び替えたい。

ですから、
材料DBで同じ材料名の料理DB::料理Noを得て、それでソート
を目的としています。

その方法は私の前記の通りです。

チポ様
大変申し訳ありませんがDBのサンプルを作成頂けないでしょうか。
初心者の私には理解できなくてどうして良いのか分からない状態になりました。
メールでのやり取りは難しいですね。
サンプルを通して勉強したいと思います。
勝手なお願いですが宜しくお願い致します。

#20 2016-03-30 11:11:12

チポ
Member

Re: 別テーブルに合わせたソート

申し訳ないですね、
私はここでのファイルのアップ、ダウンはしないことに決めています。

どなたかがしていただければいいのですが・・


材料DBでのリレーション設定が出来たのですから、
料理DBでも同じ様に設定すればいいことですよ。

Offline

#21 2016-03-30 13:30:35

scripter
Guest

Re: 別テーブルに合わせたソート

全然違う方法
両方とも材料名(と必要ならNo)でソートする
材料DB::料理Noに料理DB::料理Noをインポート(対象レコードを置き換え)
料理Noでソートする

#22 2016-03-30 14:24:09

konan
Guest

Re: 別テーブルに合わせたソート

scripter wrote:

全然違う方法
両方とも材料名(と必要ならNo)でソートする
材料DB::料理Noに料理DB::料理Noをインポート(対象レコードを置き換え)
料理Noでソートする

有難うございます。
希望は料理DBの材料名のそのままの順番に材料DBをソートする方法です。
料理DBの順番が基準になるので、両方ソートは良くないと思うのですが。

#23 2016-03-30 15:21:13

konan
Guest

Re: 別テーブルに合わせたソート

チポ様、理解不足で申し訳ありません。
手作業で行うと希望通りできるようになりましたが、ご説明頂いたのは、この様な内容でしょうか。
改めて一つづつお伺いいたします。

1.料理DBに順位フィールドを作成、材料DBに順位とインポート料理Noフィールドを作成。

2.順位を下記のように入力
料理DB
料理No  商品名    材料名    順位
121        カレー      牛肉     牛肉1
122        カレー      牛肉     牛肉2   
123        カレー      牛肉     牛肉3
124       寿司        マグロ    マグロ1    
125       寿司        マグロ    マグロ2
126       餃子         豚肉       豚肉1

材料DB
材料No        材料名           順位         インポート料理No      
501             マグロ         マグロ1 
502             牛肉            牛肉1 
503             マグロ         マグロ2 
504             豚肉            豚肉1
505             牛肉           牛肉2
506             牛肉           牛肉3

3.材料DBで対象レコード内で一致するレコードを更新で料理DBからインポート
      順位        =      順位
      料理No  ⇒     インポート料理No   


4.インポート料理Noでソート   
   これで料理DBの材料名と順番が揃いました。
材料No    材料名      順位    インポート料理No      
502          牛肉        牛肉1          121
505          牛肉        牛肉2          122
506          牛肉        牛肉3          123
501          マグロ     マグロ1       124 
503          マグロ     マグロ2       125 
504          豚肉        豚肉1          126

#24 2016-03-30 16:29:06

konan
Guest

Re: 別テーブルに合わせたソート

追加情報です。
料理DBの順位入力も計算で下記のようにできるようになりました。
修正したのは自己リレーションです。
   材料名 = 材料名
   and
   料理No >= 料理No   ⇒ 材料Noを変更しました

料理DB
料理No  商品名    材料名    順位
121        カレー      牛肉     牛肉1
122        カレー      牛肉     牛肉2   
123        カレー      牛肉     牛肉3
124       寿司        マグロ    マグロ1   
125       寿司        マグロ    マグロ2
126       餃子         豚肉       豚肉1

#25 2016-03-30 16:48:58

scripter
Guest

Re: 別テーブルに合わせたソート

konan wrote:

希望は料理DBの材料名のそのままの順番に材料DBをソートする方法です。
料理DBの順番が基準になるので、両方ソートは良くないと思うのですが。

「そのまま」というのは料理Noの順ですよね。別の材料の順番は関係ないんで、材料名でソートすれば、各材料内では今やってるリレーションでの番号と同じ順に並びます。
料理Noが入力順と違う場合に、確実にソートするには、材料名と料理Noでソートです。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 590.45 KiB (Peak: 626.98 KiB) ]