三表联查并排除重复项的有关问题
三表联查并排除重复项的问题
从以下三个表检索数据:
品名表T1:
ID 品名 规格 功能 厂家
1 品名1 规格1 功能1 厂家1
2 品名2 规格2 功能2 厂家2
3 品名3 规格3 功能3 厂家3
销售表T2:
ID 品名ID 数量 价格 销售情况
1 品名ID1 1 价格1 销售情况1
2 品名ID2 3 价格2 销售情况2
3 品名ID3 1 价格3 销售情况3
编号表T3:
ID 销售表ID 编号
1 1 1
2 2 2
3 2 3
4 2 4
5 3 5
希望得到这样的结果(按编号排序,但品名不重复):
品名 数量 编号 功能 ……
品名1 1 1 功能1
品名2 3 2~4 功能2
品名3 1 5 功能3
问题:如果不按编号排序,比较容易实现,但我的要求是要按编号排序,结果得到了有重复品名的结果:
品名 数量 编号 功能 ……
品名1 1 1 功能1
品名2 3 2 功能2
品名2 3 3 功能2
品名2 3 4 功能2
品名3 1 5 功能3
我现在的句子是:
select t1.品名,t2.数量,(select cast(min(t3.编号) as varchar)+'~'+cast(max(t3.编号)) as varchar as bh from t3 where t3.销售表id=t2.id) as 编号,t1.功能 from t2 inner join t1 on t1.ID=t2.品名id inner join t3 on t3.销售表id=t2.id where …………
若加l了 order by t3.编号 ,就有重复的品名。
希望各位提供更好的SQL句子(不考虑存储过程)。谢谢!
------解决思路----------------------
从以下三个表检索数据:
品名表T1:
ID 品名 规格 功能 厂家
1 品名1 规格1 功能1 厂家1
2 品名2 规格2 功能2 厂家2
3 品名3 规格3 功能3 厂家3
销售表T2:
ID 品名ID 数量 价格 销售情况
1 品名ID1 1 价格1 销售情况1
2 品名ID2 3 价格2 销售情况2
3 品名ID3 1 价格3 销售情况3
编号表T3:
ID 销售表ID 编号
1 1 1
2 2 2
3 2 3
4 2 4
5 3 5
希望得到这样的结果(按编号排序,但品名不重复):
品名 数量 编号 功能 ……
品名1 1 1 功能1
品名2 3 2~4 功能2
品名3 1 5 功能3
问题:如果不按编号排序,比较容易实现,但我的要求是要按编号排序,结果得到了有重复品名的结果:
品名 数量 编号 功能 ……
品名1 1 1 功能1
品名2 3 2 功能2
品名2 3 3 功能2
品名2 3 4 功能2
品名3 1 5 功能3
我现在的句子是:
select t1.品名,t2.数量,(select cast(min(t3.编号) as varchar)+'~'+cast(max(t3.编号)) as varchar as bh from t3 where t3.销售表id=t2.id) as 编号,t1.功能 from t2 inner join t1 on t1.ID=t2.品名id inner join t3 on t3.销售表id=t2.id where …………
若加l了 order by t3.编号 ,就有重复的品名。
希望各位提供更好的SQL句子(不考虑存储过程)。谢谢!
------解决思路----------------------
品名 数量 编号 功能
----- ---- -------------------------------------------------------------- -----
品名1 1 1 功能1
品名2 3 2~4 功能2
品名3 1 5 功能3