1

グループ結合の結果を使用できず、さらに結合を他のテーブルに適用できません。

私のSQLクエリは次のとおりです。

SELECT *
FROM   
    [dummy_database].[dbo].[MA] M
INNER JOIN 
    SN.dbo.A A ON A.ApplicantMAId = M.MAId
INNER JOIN 
    SN.dbo.SP SP ON  SP.PropertyMAId = M.MAId
INNER JOIN 
    SN.dbo.MCC CC ON  CC.MAId = m.MAId
INNER JOIN 
    SN.dbo.MLSTN T ON  T.MAT_ID = M.MAId
INNER JOIN 
    (SELECT 
        MAX(MAT_DATE) AS MaxDate,
        MAT_ID
     FROM   
        [SN].[dbo].[MLSTN]
     GROUP BY
        MAT_ID) Q ON  Q.MAT_ID = M.MAId

そして、私がこれまでに行ったことは次のとおりです。

 var q = (from ml in context.MLSTN
                 group ml by ml.MAT_ID into g
                 let maxdate = g.Max(date => date.MAT_DATE)
                 select new
                 {
                     MortgId = g.Key,
                     TrackingDate = g.FirstOrDefault(val => val.MAT_DATE == maxdate).MAT_DATE

                 }
                 );

しかし、今では、この結果を他のテーブルとの結合を作成するために使用することはまったくありません。さらに参加するにはどうすればよいですか?どんな手掛かり?

4

1 に答える 1

1

次のようなものが必要です。

var groups = context.MLSTN
    .GroupBy(x => x.MAT_ID)
    .Select(g => new 
    {
        MAT_ID = g.Key,
        MaxDate = g.Max(date => date.MT_DATE)
    });

var result = context.MA
    .Join(context.A,
        m => m.MA_ID,
        a => a.MA_ID,
        (m, a) => new 
        {
            MA = m,
            A = a
        })
    .Join(context.SP,
        x => x.MA.MAId,
        sp => sp.PropertyMAId,
        (x, sp) => new
        {
            MA = x.MA ,
            A = x.A,
            SP = sp
        })
    .Join(context.MCC,
        x => x.MA.MAId,
        cc => cc.MAId,
        (x, cc) => new
        {
            MA = x.MA ,
            A = x.A,
            SP = x.SP,
            MCC = cc
        })
    .Join(context.MLSTN,
        x => x.MA.MAId,
        t => t.MAT_ID,
        (x, t) => new
        {
            MA = x.MA ,
            A = x.A,
            SP = x.SP,
            MCC = x.MCC,
            MLSTN = t
        })
    .Join(groups,
        x => x.MA.MAId,
        g => g.MAId,
        (x, g) => new
        {
            MA = x.MA ,
            A = x.A,
            SP = x.SP,
            MCC = x.MCC,
            MLSTN = t,
            MLSG = g
        });
于 2013-01-16T09:25:48.907 に答える