2009-07-21 5 views
0

私はそこに同様の投稿があることを知っていますが、自分のクエリでそれらのいずれかを使用しようとすると、MS Accessを使用して結合テーブルの行を1つだけ戻す

基本的に、SQLビューを使用してACCESSで照会するテーブルが3つあります。これは( タスクID タスクのタイトル プロジェクトID: タスク

TB1フィールドが欲しかった:最初かかわらこの例のために、私はちょうど2

TB1名でそれをやろうとしています

最後に、プロジェクトのタイトルをつかむために使用される前述したように、第三のテーブルをIE)

TB2名: タスクノート

個の

TB2のフィールドが欲しかっ:デザインビューを使用して起こっていた何 タスク注ID タスク注日付 タスク注

は、タスクテーブル内の1つのタスクに関連する例えば3人のリアクションがあった場合、それが一覧表示されたということですすべての3つのタスクノート。

私がやりたいことは、[タスクノートID]または[タスクノート日付]だけで入力した最後のタスクメモを取り出すことです。

は、私は今のままにしています何、ここからヘルプから構築され、以下のSQL文です:

SELECT 

t.[Task ID], 
t.[Task Title], 
t.[Project ID], 
tn.* 

FROM 
Tasks t 

INNER JOIN [Task Notes] tn ON t.[Task ID] = tn.[Task ID] 

WHERE tn.[Task ID] = 
    (SELECT max(tn.[Task Note Date]) FROM tn where tn[Task ID] = t.[Task ID]) 
; 

私はこれで構文エラーを取得していますが、以前の化身にもこだわって私を残しています。

私は通常ACCESSとphp/aspの外で開発していますが、ACCESSでは初心者です。

任意の助けをいただければ幸いです

乾杯

マシュー

答えて

1

この

SELECT t.[Task ID], 
     t.[Task Title], 
     t.[Project ID], 
     tn.*  
    FROM Tasks t 
     INNER JOIN 
     (
      SELECT [Task ID], 
       MAX([Task Note Date]) MaxDate 
      FROM [Task Notes] 
      GROUP 
       BY [Task ID] 
     ) TaskNoteIDS 
      ON t.[Task ID] = TaskNoteIDS.[Task ID] 
     INNER JOIN [Task Notes] tn 
      ON TaskNoteIDS.[Task ID] = tn.[Task ID] 
      AND TaskNoteIDS.MaxDate = [Task Notes].[Task Note Date]; 
+0

こんにちは 上記の例でTaskNoteIDSとは何ですか? これはタイプミスか、それとも一時テーブルですか?私はこれで構文エラーが発生していますが、[タスクノート]を使用しようとすると構文エラー(実際には役に立たないMS)が返されます。 乾杯 Matthew –

+0

TaskNoteIDSはサブセレクトです。内部結合Tと ( 作業FROMこの SELECT * を試してみてください ( SELECT [タスクメモ]。[タスクID]、マックス([タスク注]。[タスクID] GROUP BY [タスクID] )AS TaskNoteIDS ON t。[タスクID] = TaskNoteIDS。[タスクID] )INNER JOIN [タスクID] FROM [タスクメモ] [Task Notes] ON(TaskNoteIDS.MaxDate = [Task Notes]。[Task Note Date])AND([Task Notes]。[タスクID] = TaskNoteIDS。[タスクID]); –

0

試しのような何か試してみてください:

FROM tasks AS t 
FROM [other table] AS tn 

をそれMS Accessで見つかった "SQL flavor variant" ...

+0

投稿されたままでは動作しません - 閉じる角括弧の後に後続の期間が必要です。大括弧を必要とするひどく名前のついたフィールドやテーブルがある場合、それらは派生テーブル内では参照できません。また、SQL 92モードの場合は、standard()を使用できます。 –

関連する問題