0
私は問題があります。私はIDでリンクされた2つのテーブルを持っています。私にできることSQL - いくつかのcruddyデータを持つ明確なエントリ
TableA
ID
Price
Other_Stuff
TableB
ID
TableA_ID
Type
Age
:
SELECT
M1.Age,
F1.Age,
M2.Age,
F2.Age,
FROM TableA
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='1') AS M1 ON M1.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='2') AS F1 ON F1.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='3') AS M2 ON M2.TableA_ID=TableA.ID
LEFT JOIN (SELECT * FROM TableB WHERE TableB.Type='4') AS F2 ON F2.TableA_ID=TableA.ID
物事はデータは常に良いではありません期待通りのデータは良好である一方で、動作しますが。通常、TableBにはそれぞれのタイプが最大で1つ、またはまったくありません。問題は、テーブルの古いデータの場合、タイプ3と5が存在する前に、タイプ1とタイプ2の2つが存在する可能性があります。その場合、2番目のタイプ1をタイプ2として扱い、2番目のタイプ2をタイプ4として扱いたいとします。
基本的には、テーブルAの各エントリに対して、私は自分のコラムで、TableAのそれぞれについて複数のレコードを必要としません。
私はMS SQL 2000を使用しています....古い、私は知っています。
おかげで、
私もこのことを思ったが、結果は、サブクエリの最初のエントリが返されることです。 1つの返されたレコードに基づいて、結合のON部分が使用されるので、最終的な結果は、問合せ全体の1レコードを除いてすべてのレコードには年齢があり、それ以外はすべてNULLです。 – Justin808