2016-07-14 15 views
0

おはようございます!私はMS Accessの()はまだ(MS SQL Serverを使用していない)データベースを分割持っ(MS ACCESS)結合されたステートメントをグループ化するSQL

は、だから、最終的にはこれを(想像 "TEMP" と呼ばれる!)一時クエリとテーブルのカップル

SELECT table_CORE.[core-ID], 
table_CORE.[PO], 
table_CORE.[Part], 
table_CORE.[Part Rev], 
table_CORE.[Supplier DoC#], 
table_CORE.[Sup Doc Rev], 

table_DATES.[date-ID], 
table_DATES.[iteration], 

table_REJECTIONS.[rejection-ID], 
table_REJECTIONS.[iteration], 
table_REJECTIONS.[reason], 
table_REJECTIONS.[details], 
table_REJECTIONS.[timestamp] 

FROM 
    (
     (
      table_CORE INNER JOIN [TEMP] 
      ON table_CORE.[core-ID] = TEMP.[date-ID] 
     ) 
     INNER JOIN [table_DATES] 
      ON TEMP.[date-ID] = table_DATES.[date-ID] 
      AND TEMP.[iteration]=table_DATES.[iteration] 
    ) 
    INNER JOIN table_REJECTIONS 
     ON TEMP.[date-ID] = table_REJECTIONS.[rejection-ID] 
     AND TEMP.[iteration]=table_REJECTIONS.[iteration] 
WHERE table_CORE.[core-ID] Like '*' 

入社のthatsそれぞれの文書が複数の部分に適用されることを除いて、文書の拒否リストが表示されます。 「詳細を除いて問題は、私は通常、クラウスBY GROUPでこれを行うだろうが...

... -

あなたが1つの文書にこれらの拒絶を折りたたむにはPO、パートやパート改訂をタイアップすることができます"フィールドはメモのデータ型で、GROUP BY句を使用すると、256文字に切り詰められます。

これを回避する方法はありますか?私はrejecitonテーブルに参加する前にgroup句を試しましたが、同じ問題(同じPO、Part NumberとRevisionが一緒に繋がれた複数の拒否があります)で終わります。私は他のメソッドを調べていますしかし、私はそれのために必要なSQLの周りに私の頭を得ることができません!

多くの感謝!

詳細が必要な場合は、私に叫んでください!

---その他の詳細---

例:に変更する

ID  PO  Part Rev reason details 
1  111  A1  A error some_details1 
2  111  A1  A error some_details1 
3  111  A1  A error some_details1 
4  222  A1  A error some_details1 
6  222  A1  A error some_details1 
7  333  B1  A error some_details1 
8  333  B1  A error some_details1 
9  444  B1  A error some_details1 
10  555  C1  A error some_details1 

ニーズ:機能への参加方法について

PO  Part Rev reason details 
111  A1  A error some_details1 
222  A1  A error some_details1 
333  B1  A error some_details1 
444  B1  A error some_details1 
555  C1  A error some_details1 

注意が働いている:

現在のアイテムはCOREに格納され、1対多の関係を持つ日付に束縛されますcore-ID >> date-IDで、繰り返しを使用して最新のイベントを取得します。最新のイベントは、その後、現在アクティブな拒絶反応を返すようにコア - ID >> rejeciton-ID 日付反復>> rejectioniterationを使用して拒否リストにまで参加している

+0

なぜ詳細でグループ化する必要がありますか?失敗したクエリの例がありますか?クエリから抜け出したいものを示すためのサンプルデータがありますか? – dbmitch

+0

@dbmitch問題の要点は、PO /部品番号/リビジョンごとにグループ化し、残りの詳細フィールドに結びつける必要がある重複した拒否を効果的に持っていますが、私はGroup By PO /パート/リビジョンのための句を作成し、それを詳細フィールドに正しく結合します。 まもなく詳細が掲載されます –

答えて

0

私は不正行為をして、私のために私のSQLを書くためにMSを得ることが判明!

クエリーエディタ(SQL Directlyではなく)でAllenBrowneのアドバイスを受け、GROUP BY()の代わりにFIRST()を使用してtable_REJECTIONS.detailsを集約しました。

クエリのための生のSQLを以下に示します。

SELECT table_CORE.PO, 
table_CORE.Part, 
table_CORE.[Part Rev], 
table_CORE.[Supplier DoC#], 
table_CORE.[Sup Doc Rev], 
table_REJECTIONS.reason, 
First(table_REJECTIONS.details) AS details 

FROM 
    (
     (
     table_CORE INNER JOIN TEMP 
     ON table_CORE.[core-ID] = TEMP.[date-ID] 
     ) 
     INNER JOIN table_DATES 
     ON 
      (
       TEMP.[iteration] = table_DATES.[iteration] 
      ) 
     AND 
      (
       TEMP.[date-ID] = table_DATES.[date-ID] 
      ) 
    ) 
     INNER JOIN table_REJECTIONS 
     ON 
     (
      TEMP.[iteration] = table_REJECTIONS.[iteration] 
     ) 
    AND 
     (
      TEMP.[date-ID] = table_REJECTIONS.[rejection-ID] 
     ) 

WHERE table_CORE.[core-ID] Like '*' 
GROUP BY table_CORE.PO, 
table_CORE.Part, 
table_CORE.[Part Rev], 
table_CORE.[Supplier DoC#], 
table_CORE.[Sup Doc Rev], 
table_REJECTIONS.reason; 
関連する問題