2 つのテーブル間に多対多の関係があります。最初のテーブルを 2 番目のテーブルとの最初の関係で並べ替え、そのテーブルから 1 つの結果のみを返したいと思います。これは SQL Server 上にあります。私はこのようなものが欲しいです:
SELECT a.retrieve_me
FROM table_A AS a
JOIN table_B AS b ON a.foo = b.foo
JOIN table_C AS c ON b.bar = c.bar
ORDER BY c.sort_me
残念ながら、MN(k) 個の結果が返されます。ここで、Mは「table_A」のカウントであり、N(k)は「table_C」との単一行kの関係の数です。DISTINCT
ポストフィルタリングなしで必要な結果だけを返すには、SELECT
句で使用して使用しようとしましたTOP(SELECT COUNT(*) FROM table_A)
が、どちらも有効な構文ではありません。
何か案は?これを可能な限りパフォーマンス化できることを願っています。
編集:
明確にするために
table A
------------
"joe" 1
"betty" 2
"george" 3
table B
------------
1 2
1 3
2 3
2 4
3 1
table C
------------
1 "ashton"
2 "harding"
3 "spring"
4 "merry lane"
「ジョージ」、「ジョー」、「ベティ」の順番で結果を返してほしい(ジョージ→アシュトン、ジョー→ハーディング、ベティ→メリーレーン)。