3つのテーブルのデータが必要な場所で1つの結果を得ることは可能ですか?SQL結合データ
最初の表:私は(主キーによって見出さ1行)すべてのフィールドを取得する必要が
二番目の表:私はフィールド「ユーザ名」を取得する必要があります(「MASTER_ID」によって最初のテーブルに接続されています)
3番目のテーブル:関連するmaster_idキー(テーブルに 'date'、 'master_id'、 'previous_name'がある)を追加する必要があります。
3つのテーブルのデータが必要な場所で1つの結果を得ることは可能ですか?SQL結合データ
最初の表:私は(主キーによって見出さ1行)すべてのフィールドを取得する必要が
二番目の表:私はフィールド「ユーザ名」を取得する必要があります(「MASTER_ID」によって最初のテーブルに接続されています)
3番目のテーブル:関連するmaster_idキー(テーブルに 'date'、 'master_id'、 'previous_name'がある)を追加する必要があります。
select top 1 first.*, second.username, third.*
from first
inner join second on first.id = second.master_id
inner join third on first.id = third.master_id
order by
third.date desc
いつも猫を肌する方法の数十があるので、私はこれは、サブクエリの方法として最適化されているかどうかわからないんだけど、それが動作するはずです。
3つのテーブルを結合することができます。あなたはその3番目のテーブルのための相関副問合せをする必要があります
select *
from Table1 t1
join Table2 t2
on t2.master_id = t1.master_id
join Table3 t3
on t3.master_id = t1.master_id
join (
select master_id
, max(date) as max_date
from Table3
group by
master_id
) as filter
on t3.master_id = filter.master_id
and t3.date = filter.max_date
:次に、あなたは、「フィルタ」のみ、最新の表3の行を保つために参加を使用することができます。
SELECT t1.*, username, date, previous_name
FROM FirstTable t1
INNER JOIN SecondTable t2 ON t1.master_id=t2.master_id
INNER JOIN
(SELECT master_id, date, previous_name
FROM ThirdTable AS t3_1
WHERE date = (
SELECT MAX(date)
FROM ThirdTable AS t3_2
WHERE t3_2.master_id=t3_1.master_id)) q1 ON q1.master_id=t1.master_id;
注:未テストです。
無関係のサブクエリも機能します。私の答えを参照してください。関連クエリは、特にmaster_idにインデックスがある場合は、少量の行に対してよりうまくいくはずです – Andomar
+1あなたが1行後になった場合は、間違いなく最良の選択です! – Andomar
ああ、1行だけ!まあ、プレイしました! – MPelletier