2017-05-26 10 views
0

これは私が左結合を使用する私のテーブル1と2です。 1つの表に表示されるようですが、 表1は、idが がそう表2に、私はIDが重複することができ名前と日付を追加し、重複することはできませんマスタリスト 最大日付とヌル日付のIDの区別レコードを取得する

+----+---------+----------------+ 
| id | Date | Name   | 
+----+---------+----------------+ 
| 1 | 5/25/17 | Monica Coleman | 
| 1 | 5/26/17 | Kelsi Mines | 
| 2 |   |    | 
| 3 | 5/9/17 | Vanessa Heart | 
| 4 | 5/8/17 | Ryan Evans  | 
| 4 | 5/10/17 | Sharpay Evans | 
| 5 |   |    | 
| 6 |   |    | 
| 7 | 5/6/17 | Troy Bolton | 
+----+---------+----------------+ 

私はこのコードを使用する場合

...のようなものです

SELECT P.id, R.DateAdded, R.Name FROM Table1 AS P LEFT JOIN Table2 AS R ON P.id=R.id WHERE ((([R.DateAdded])=(SELECT MAX(DateAdded) FROM R WHERE InventoryID = R.InventoryID))); 

...その後、これらの結果は...

+----+---------+----------------+ 
| id | Date | Name   | 
+----+---------+----------------+ 
| 1 | 5/26/17 | Kelsi Mines | 
| 3 | 5/9/17 | Vanessa Heart | 
| 4 | 5/10/17 | Sharpay Evans | 
| 7 | 5/6/17 | Troy Bolton | 
+----+---------+----------------+ 

しかし、私は文が返すようにしたいです...

を表示
+----+---------+----------------+ 
| id | Date | Name   | 
+----+---------+----------------+ 
| 1 | 5/26/17 | Kelsi Mines | 
| 2 |   |    | 
| 3 | 5/9/17 | Vanessa Heart | 
| 4 | 5/10/17 | Sharpay Evans | 
| 5 |   |    | 
| 6 |   |    | 
| 7 | 5/6/17 | Troy Bolton | 
+----+---------+----------------+ 

答えて

0

私は私の答えを得ました。私はヌルを使用しています

SELECT P.id, R.DateAdded, R.Name FROM Table1 AS P LEFT JOIN Table2 AS R ON P.id=R.id WHERE ((([R.DateAdded])=(SELECT MAX(DateAdded) FROM R WHERE InventoryID = R.InventoryID))) OR R.DateAdded IS NULL; 
0

ほとんどのデータベースでは、条件をON句に追加します(またはROW_NUMBER()を使用します)。どちらもMS Accessでサポートされていません。したがって、サブクエリを使用してください:

SELECT P.id, R.DateAdded, R.Name 
FROM Table1 AS P LEFT JOIN 
    (SELECT R.* 
     FROM Table2 AS R 
     WHERE R.DateAdded = (SELECT MAX(R2.DateAdded) FROM Table2 R2 WHERE R.InventoryID = R2.InventoryID) 
    ) as R 
    ON P.id = R.id 
+0

エラーFROM句 – elaine8s

+0

@ elaine8sがあります。 。 。おそらくそれは 'WHERE'節のタイプミスによるものでした。 –

関連する問題