主题:  请教SQL语句

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#12004/10/5 23:51:42
有三个表:

表1、商品表[Product]
ProductID
Name(商品名)
......

表2、仓库表[Storeroom]
StoreroomID
Name(仓库名)
......

表3、库仓商品表[StoreProduct]
ProductID(商品ID)
StoreroomID(仓库ID)
Amount(库存数)
NowUnitPrice(当前平均价)

已知,仓库是存在仓库表中,并且个数是动态添加的。
我想列出每件商品的名称、商品当前平均价、商品在每个现有仓库中的储存量
表头如:

[商品名称] [平均成本价] [仓库1储量] [仓库2储量] [仓库3量] ......

不知有没有方便的方法,最好用SQL语句能搞定


非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#22004/10/6 3:02:09
晚上,我仔细做了,看了些参考书,觉得用一句SQL难以表达,所以分二组,
一组为得到仓库列表
二组为最后结果SQL语句完成。

用DataSet来存储仓库信息及查询结果

DataSet dsUse;
dsUse = new DataSet
dsUse.Tables.Add("Storeroom") //仓库表
dsUse.Tables.Add("StoerSearch") //查询表

查询仓库很方便
SELECT * FROM Storeroom ORDER BY StoreroomID
然后就Fill到dsUse.Table["Storeroom"]表去了

写查询句较复杂
string sql = "SELECT Code, BrandAndName";
for (int i = 0; i < dsUse.Tables["Storeroom"].Rows.Count; i++)
{
    sql += ",";
    sql += "(SELECT Amount FROM StoreProduct"
        + " WHERE StoreProduct.ProductID = Product.ProductID"
        + " AND StoreroomID = " + dsUse.Tables["Storeroom"].Rows[i]["StoreroomID"].ToString() + ")";
    sql += " AS [" + dsUse.Tables["Storeroom"].Rows[i]["Name"].ToString() + "]";
}
sql += " FROM Product";

后面就不多说了,结果很成功。当然明天我还要完成一些更漂亮的后缀活。


非常大鱼