Working with inner join

Posts   
 
    
Posts: 2
Joined: 21-Aug-2010
# Posted on: 21-Aug-2010 17:36:52   

Hi all,

I am just starting work with LLBLGen pro. I am having problem getting combined data from 2 different tables ( like inner join we do in SQL).

I have one table named Bank with following fields

BankNumber BankName

and another table Bank_Branches with following fields:

BankNumber Branchname PhoneNumber,

And I want a result set containing following structure:

BankName <from Bank table> Branchname PhoneNumber

I tried using this code

Dim Adapter As DataAccessAdapter = clsGlobalMethods.GetNewAdapter()
            Dim Bucket As RelationPredicateBucket = New RelationPredicateBucket()
            Dim path As New PrefetchPath2(CType(EntityType.AdminBankBranchesEntity, Int32))
            'Clear any deleted entries
            DeletedEntities_BankBranches.Reset()

            AdminBankBranches = New EntityCollection(Of AdminBankBranchesEntity)

            Bucket.Relations.Add(AdminBankBranchesEntity.Relations.AdminBanksEntityUsingBankNumber, JoinHint.Inner)
            Bucket.PredicateExpression.Add(AdminBankBranchesFields.BankNumber = AdminBanksFields.BankNumber)
            path.Add(AdminBankBranchesEntity.PrefetchPathAdminBanks)
            'retrieve results
            Adapter.FetchEntityCollection(AdminBankBranches, Bucket, path)

but the fetched entity does not contain a column named BankName, instead it contains entire BankBranch row...

Please help

Thank you

daelmo avatar
daelmo
Support Team
Posts: 8245
Joined: 28-Nov-2005
# Posted on: 22-Aug-2010 22:34:22   

This is a good candidate to use DynamicList. This is an object you construct on your code and it has just the fields you want on the final set:

DataAccessAdapter adapter = new DataAccessAdapter();
ResultsetFields fields = new ResultsetFields(3);
fields.DefineField(AdminBankBranchesFields.BranchName, 0);
fields.DefineField(AdminBankBranchesFields.PhoneNumber, 1);
fields.DefineField(AdminBanksFields.BankName, 2);

IRelationPredicateBucket bucket = new RelationPredicateBucket();
bucket.Relations.Add(AdminBankBranchesEntity.Relations.AdminBanksEntityUsingBankId, JoinHint.Inner);

DataTable dynamicList = new DataTable();
adapter.FetchTypedList(fields, dynamicList, bucket, 0, null, true, null);
David Elizondo | LLBLGen Support Team