产品横向搜索需求:
select vpa.* from v_product_attribute vpa where id=6 order by paid;
苹果iPhone 4480 数码 网络类型 3G
苹果iPhone 4480 数码 屏幕颜色 26万色
苹果iPhone 4480 数码 样式 滑盖
苹果iPhone 4480 数码 铃声 64和弦
将多个属性显示在一行:
苹果iPhone 4480 数码 网络类型@3G 屏幕颜色@26万色 样式@滑盖 铃声@64和弦
视图的结构:
create or replace view v_product_attribute as
select p.id,p.productname,p.unitprice,p_s.name pt,p_a.name,p_a_v.attrivalue,p_a_v.attriid paid
from product p ,product_sort p_s ,product_attribute p_a, product_attribute_value p_a_v
where p.typeid = p_s.id
and p_a_v.pid = p.id
and p_a_v.attriid = p_a.id;
通过FUNCTION实现:
create OR REPLACE FUNCTION list_pa(pid NUMBER)
RETURN VARCHAR2
IS
var_pa VARCHAR2(4000);
BEGIN
FOR cur IN (SELECT name||' @'||attrivalue as pa FROM v_product_attribute vpa WHERE id=pid) LOOP
var_pa := var_pa||' '||cur.pa;
END LOOP;
var_pa := rtrim(var_pa,1);
RETURN var_pa;
END;
select distinct vpa.id,vpa.productname,vpa.unitprice,vpa.pt,list_pa(vpa.id) list_pa
from v_product_attribute vpa where id=6
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8797129/viewspace-534762/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8797129/viewspace-534762/