我一直在努力从mysql db获得所需的输出。首先请看一下我的表结构
编辑:这是我的模式 http://rextester.com/edit/NNCZ7986
现在当我运行下面提到的查询时,我得到如下结果
Select a.prodid,a.product,b.catid,b.category,d.attvalue,c.qty,c.price
from tbl_products a left join
tbl_categories b
on a.catid = b.catid left join
tbl_prodattval c
on a.prodid = c.prodid left join
tbl_attvalues d
on c.attvalid = d.attvalid
这是我得到的结果
绿色的产品K1显示正确的数量和价格 并且还显示为单独的行 产品K1是XL及其数量和价格
但是,我需要产品K1,绿色+ XL(混合多属性)来获得价格和数量
同样,带XL和Green的Tee1应该有1个数量和价格 和带有绿色的XXL的Tee1应该有另一个
我想要下面的结果(attvalue2和attvalue3列只是虚构的......只是为了表明我想要从多属性中获得产品列表)
Prodid | Product | catid | category | attvalue | attvalue2 | attvalue3 | qty | price
20 | Tee1 | 14 | Tees | Green | XL | | 2 | 23.00
20 | Tee1 | 14 | Tees | Blue | XL | | 2 | 21.00
我如何得到它?
提前致谢
答案 0 :(得分:0)
Select a.prodid,a.product,b.catid,b.category,d.attvalue, e.attvalue,c.qty,c.price
from tbl_products a
left join tbl_categories b
on a.catid = b.catid
left join tbl_prodattval c
on a.prodid = c.prodid
left join tbl_attvalues d
on c.attvalid = d.attvalid
and d.attID = //in tbl_attributes what is attid for color (ID for color)
left join tbl_attvalues e
on c.attvalidid = e.attvalid
and d.attID = //'in tbl_attributes what is attid for size (ID for size)