私は2つのテーブルAとBを持っています。テーブルAは、各ユーザごとに複数のレコードを持つことができます。表Bは、ここで表AにSQL Server 2008の最新のレコードのみに参加する方法は?
を行ごとに複数のレコードを持つことができる例である。
Table A Table B
a_id a_key b_id b_key b_AtblID
1. 6678 5778 1. 6509 5778 6678
2. 6679 5778 2. 6508 5778 6678
3. 6507 5778 6679
4. 6505 5778 6679
5. 6490 5778 6678
は、表2のレコードを見ることができます。 1レコードはBテーブルに3レコード、Bテーブルには2レコードがあります。
テーブルAのレコードとBテーブルの最新のレコードをプルするクエリが必要です。テーブルBのすべてのレコードがテーブルAのレコードと一致する必要はありません。ここで私が持っているものの一例ですが、私のコードは、テーブルBからすべてのレコードを引っ張っ:
SELECT *
FROM A
LEFT OUTER JOIN B
ON b_AtblID = (
SELECT TOP 1 b_AtblID
FROM B
WHERE b_AtblID = a_id
ORDER BY b_id DESC
)
私は私のコードは、テーブルAの上の行ごとに1つのレコードのみを返すことを期待していたが、私は、テーブルBからすべてのレコードを得ました誰かが助けてくれたら教えてください。ありがとう。
私はここを参照してください最大の問題は、あなたがこれらの2つのテーブル間の多くの関係に多くを持っているということです。これは多くの課題を引き起こします。この関係を管理するためにブリッジテーブルを利用する方が良いでしょう。あなたはデザインを修正することができますか? –
b_idはBテーブルの主キーです。私はテーブルのアーキテクチャを変更することはできません。これは私が維持しなければならない古いシステムです... –
最新のレコードのためのあなたの基準は何ですか? 'max''b_id'? – zarruq