2009-08-26 8 views
0

précis pour faire une sélection avec jointure interne qui a relation dans plus d'un domaine entre les tablesjointure interne avec plus d'un champ

Exemple:

DataSet dt = new Select().From(SubConta.Schema) 
     .InnerJoin(PlanoContabilSubConta.EmpSubContaColumn, SubConta.CodEmpColumn) 
     .InnerJoin(PlanoContabilSubConta.FilSubContaColumn, SubConta.CodFilColumn) 
     .InnerJoin(PlanoContabilSubConta.SubContaColumn, SubConta.TradutorColumn) 
     .Where(PlanoContabilSubConta.Columns.EmpContabil).IsEqualTo(cEmp) 
     .And(PlanoContabilSubConta.Columns.FilContabil).IsEqualTo(cFil) 
     .And(PlanoContabilSubConta.Columns.Conta).IsEqualTo(cTrad) 
     .ExecuteDataSet(); 

Mais le SQL généré est erroné:

exec sp_executesql N'/* GetDataSet() */ SELECT [dbo].[SubContas].[CodEmp], [dbo].[SubContas].[CodFil], [dbo].[SubContas].[Tradutor], [dbo].[SubContas].[Descricao], [dbo].[SubContas].[Inativa], [dbo].[SubContas].[DataImplantacao] 

FROM [dbo].[SubContas] 
INNER JOIN [dbo].[PlanoContabilSubContas] ON [dbo].[SubContas].[CodEmp] = [dbo].[PlanoContabilSubContas].[EmpSubConta] 
INNER JOIN [dbo].[PlanoContabilSubContas] ON [dbo].[SubContas].[CodFil] = [dbo].[PlanoContabilSubContas].[FilSubConta] 
INNER JOIN [dbo].[PlanoContabilSubContas] ON [dbo].[SubContas].[Tradutor] = [dbo].[PlanoContabilSubContas].[SubConta] 
WHERE EmpContabil = @EmpContabil0 
AND FilContabil = @FilContabil1 
AND Conta = @Conta2 
',N'@EmpContabil0 varchar(1),@FilContabil1 varchar(1),@Conta2 varchar(1)',@EmpContabil0='1',@FilContabil1='1',@Conta2='1' 

Que faut-il faire pour générer ce sql?

exec sp_executesql N'/* GetDataSet() */ SELECT [dbo].[SubContas].[CodEmp], [dbo].[SubContas].[CodFil], [dbo].[SubContas].[Tradutor], [dbo].[SubContas].[Descricao], [dbo].[SubContas].[Inativa], [dbo].[SubContas].[DataImplantacao] 

    FROM [dbo].[SubContas] 
    INNER JOIN [dbo].[PlanoContabilSubContas] ON [dbo].[SubContas].[CodEmp] = [dbo].[PlanoContabilSubContas].[EmpSubConta] AND 
    [dbo].[SubContas].[CodFil] = [dbo].[PlanoContabilSubContas].[FilSubConta] AND 
    [dbo].[SubContas].[Tradutor] = [dbo].[PlanoContabilSubContas].[SubConta] 
    WHERE EmpContabil = @EmpContabil0 
    AND FilContabil = @FilContabil1 
    AND Conta = @Conta2 
    ',N'@EmpContabil0 varchar(1),@FilContabil1 varchar(1),@Conta2 varchar(1)',@EmpContabil0='1',@FilContabil1='1',@Conta2='1' 

Répondre

0

On dirait que vous ne pouvez pas rejoindre sur plusieurs colonnes en subsonique 2, vous pouvez simplement créer une vue SQL qui rejoint comme vous le souhaitez et obtenir subsonique pour générer un modèle pour ce point de vue.

Questions connexes