tags:

views:

1509

answers:

3

I am building a web page to show a customer what software they purchased and to give them a link to download said software. Unfortunately, the data on what was purchased and the download information are in separate databases so I can't just take care of it with joins in a query.

The common item is SKU. I'll be pulling back a list of SKUs from the customer purchases database, and on the download table is a comma deleted list of SKUs associated with that download. My intention, at the moment, is to create from this one datatable to populate a GridView.

Any suggestions on how to do this efficiently would be appreciated. If it helps, I can pretty easily pull back the data as a DataSet or a DataReader, if either one would be better for this purpose.

A: 

I am thinking off the top of my head here. If you load both as Data Tables in the same Data Sets, and define a relation between the two over SKU, and then run a query on the Data Set which produces the desired result.

Vaibhav
+2  A: 

As long as the two databases are on the same physical server (assuming MSSQL) and the username/password being used in the connection string has rights to both DBs, then you should be able to perform a join across the two databases. Example:

select p.Date,
p.Amount,
d.SoftwareName,
d.DownloadLink
from PurchaseDB.dbo.Purchases as p
join ProductDB.dbo.Products as d on d.sku = p.sku
where p.UserID = 12345
Yaakov Ellis
+2  A: 

Why not create a Domain object based approach to this problem:

public class CustomerDownloadInfo
{
private string sku;
private readonly ICustomer customer;

public CustomerDownloadInfo(ICustomer Customer){
customer = Customer;
}

public void AttachSku(string Sku){
sku = Sku;
}

public string Sku{
get { return sku; }
}

public string Link{
get{
// etc... etc...
}
}
}

There are a million variations on this, but once you aggregate this information, wouldn't it be easier to present?

Brett Veenstra