2016-10-05 8 views
1

私は3つのテーブル、tblTemplates、tblBLNALM、およびtblPrefsを持っています。彼らは、このような構造に従います。数値は、彼らは、それが何であるかを、テンプレートを決定するためにこれを使用しない場合、tblPrefsに存在しtblBLNALM.Tagnameに開始する前に私がする必要がどのような多くのテーブルの値を相互参照して結合する方法

tblPrefs: 
-------------------------------------------- 
| Pref | Derived-Template | Template | 
-------------------------------------------- 
|GA  |BLNALM_F03   |AIN_F03  | 
-------------------------------------------- 
|HSSD |BLNALM_F01   |AIN_F01  | 
-------------------------------------------- etc... 

tblBLNALM: 
------------------------------------------------------------------ 
| Controller | Compound | Tagname | BaseTemplate | Name | 
------------------------------------------------------------------ 
|15CP42  |15F00  |HSSD30001C |BLNALM   |IN_7 | 
------------------------------------------------------------------ 
|15CP12  |15F06  |GA123456 |BLNALM   |IN_3 | 
------------------------------------------------------------------ etc... 

tblTemplates: 
--------------------------------------- 
| Template | Maintenance Override | 
--------------------------------------- 
|AIN_F01  |IN_7     | 
--------------------------------------- 
|AIN_F02  |IN_5     | 
--------------------------------------- 
|AIN_F03  |IN_7     | 
---------------------------------------etc... 

は文字ならば見ることです。次に、このテンプレートとtblTemplatesを使用すると、メンテナンスがオーバーライドされます。

最終結果は一種の次のようになります。

----------------------------------------------------------------------------- 
| Controller | Compound | Tagname | Template | Maintenance Override | 
----------------------------------------------------------------------------- 
|15CP12  |15F06  |GA123456 |AIN_F03 |IN_7     | 
----------------------------------------------------------------------------- etc... 

私の本能は数EXISTS文と多分巣にそれらを使用していたが、これは助けていないので、どこ私はここから行くのですか?

私はMSACCESS 2010

を使用してい
+0

使用を代わりにタグ名の接頭辞を追加calcutaed列tblBLNALMクエリの:だろうSQLで

:あなたが説明したよう

SELECT tblBLNALM.Controller, tblBLNALM.Compound, tblBLNALM.Tagname, tblTemplates.Template, tblTemplates.[Maintenance Override] FROM (tblTemplates INNER JOIN tblPrefs ON tblTemplates.Template = tblPrefs.Template) INNER JOIN tblBLNALM ON (tblPrefs.Pref = left(tblBLNALM.Tagname, len(tblPrefs.Pref))); 

出力は次のようになります。次にこのクエリを残りの2つのテーブルにリンクします。 –

+0

@ SergeyS私はあなたが何を意味するかを100%確信していません –

+0

私はあなたがクレジットを希望するなら、それを答えとして提出していただきたいと思います。 –

答えて

1

SQL結合内で文字列操作を使用できます。

タグ名があなたのから始まる場合はどのように比較すればよいですか

+------------+----------+------------+----------+----------------------+ 
| Controller | Compound | Tagname | Template | Maintenance Override | 
+------------+----------+------------+----------+----------------------+ 
| 15CP12  | 15F06 | GA123456 | AIN_F03 | IN_7     | 
| 15CP42  | 15F00 | HSSD30001C | AIN_F01 | IN_7     | 
+------------+----------+------------+----------+----------------------+ 
+0

それは私が後にしてくれたことです、ありがとう、私はあなたがジョインで文字列操作を使うことができるか分からなかった! –

1

は3つのテーブルを結合:tblPrefstblTemplatesTemplateフィールドに参加し、その後、あなたはtblBLNALMPrefTagnameに参加する必要がありますが、ここでは、直接フィールドに参加することはできませんので、クエリを作成しますすべての列をtblBLNALMから選択し、計算された列を追加します。計算列は、Tagnameフィールドの開始文字を返し、テーブルの代わりにtblPrefsと結合して使用します。

関連する問題