日期:2014-05-18  浏览次数:20399 次

一个DataGrid如何实现这样的两张表的数据绑定?
有一个商品表和一个每日价格表:
product(productCode,   productName)
Price(productCode,   Date,   Price)

Product:
0001     Car1
0002     Car2

Price  
0001     2007-8-5       $1000
0001     2007-8-5       $1200
0002     2007-8-6       $1300

现在我想在一个DataGrid中实现这样的效果,显示每种商品2007-8-9日的价格,如果没有,则价格一项列为空:
如:

ProductName     Price  
car1                   (如果有数据则显示,无数据,则空白)    
car2

string   CnnString= "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "+Server.MapPath( "Product.MDB ");  
OleDbConnection   cnn   =   new   OleDbConnection(CnnString);  
StringBuilder   Sb=new   StringBuilder( "Select   *   from   Product   Left   Outer   Join   Price   on   Product.ProductCode=Price.ProductCode ");
Sb.Append( "   Where   Price.Date= ");
Sb.Append(txtDate.Text);
OleDbDataAdapter   Da=new   OleDbDataAdapter(Sb.ToString(),cnn);
DataSet   Ds=new   DataSet();
cnn.Open();
Da.Fill(Ds, "ResTable ");
DBGrid.DataSource=Ds.Tables[ "ResTable "].DefaultView;
DBGrid.DataBind();
cnn.Close();

这个左联接查询不加Where   条件时还可以实现如果价格为空则显示空白,但加入了Where   条件后,如果当日价格为空则一行数据也不显示了?

请高手们指点,如何能实现我想要的效果?

------解决方案--------------------
select * from Product left join (select productCode,Price from Price where Date= '2007-8-9 ') on Product.productCode=Price.productCode
------解决方案--------------------
我说的是这样,你试下看