请教大家一个问题内容如下:
Tb_Customer(客户表)
CustomerID,CustomerName,CustomerTel,CustomerAddress
Tb_CustomerImg(客户图片表)
CustomerImgID,CustomerImg,CustomerID
Tb_CustomerProduct(客户产品表)
CustomerProductID,CustomerProduct,CustomerID
一个客户对应多张图片和多个产品
显示结果:
客户名称A、客户地址A,客户电话A,客户A产品1;客户A产品2;客户A产品3... 客户A图片1
客户A图片2
客户A图片3 等
客户名称B、客户地址B,客户电话B,客户A产品1;客户A产品2;客户B产品3... 客户B图片1
客户B图片2
客户B图片3 等
客户名称C、客户地址C,客户电话C,客户C产品1;客户C产品2;客户C产品3... 客户C图片1
客户C图片2
客户C图片3 等
显示的结果通过页面的控件来显示的。
是问题没问完。。还是我理解不够啊 汗死
楼主是想将竖着的列表横过来?
1. 如果可以用RDLC报表,可以直接用它的交叉表控件,非常灵活好用,可以看博客园里的蜡人张大虾的文章。
2. 如果用的是SQL 2005,可以用它的Pivot关键字,但是要求事先知道图片的上限是多少。如果不能确定上限,就需要Pivoit+动态拼接SQL语句的方法。
3. 如果用的是Oracle,需要用Decode()函数和Union,网上有很多这方面的文章。
SQL 查询:
SELECT * FROM Customer WHERE 。。。。
SELECT ci.* FROM Customer as c
INNER JOIN Tb_CustomerImg as ci ON ci.CustomerId=c.CustomerId
WHERE 。。。。
SELECT cp.* FROM Customer as c
INNER JOIN Tb_CustomerProduct as ci ON ci.CustomerId=c.CustomerId
WHERE 。。。。
-------------------------------------
接收数据库的数据:
using(....)
{
while(sdr.read())
{ // TODO....
}
if(sdr.NextResult())
{
while(sdr.read())
{ // TODO....
}
}
if(sdr.NextResult())
{
while(sdr.read())
{ // TODO....
}
}
}
--------------------------------------
从取到数据之后,
foreach(Customer c in CList)
{
foreach(CustomerImg ci in CIList)
{
if(ci.CustomerId=c.CustomerId) { // TODO ...
}
}
foreach(CustomerProduct cp in CPList)
{
if(cp.CustomerId=c.CustomerId) { // TODO ...
}
}
}