大概是这样:商品表 product:
pid;
uid(卖家);
其他字段省略用户表 user:
uid;
uname;
其他字段省略收藏表 collect:
cid;
pid;
uid;现在用户登录之后查询我的收藏显示:
商品    卖家名    其他省略要是依照用户id查收藏的话,卖家名就查不出来了,买家卖家都是在user表里,要是查出product表里的卖家uid再循环查出卖家uname对数据库压力很大,跪求高手指点。

解决方案 »

  1.   

    pid、cid 分别表示什么?
      

  2.   

    就是说先不查询uname,三表查询之后建立虚拟表,然后用虚拟表跟user进行左连接?但是三表查询出来的uid是登陆者的uid,因为条件是col.uid=u.uid and col.shopid=s.shopid and u.uid=$_COOKIE['yiyuanli_uid']
      

  3.   

    pid、cid都是自增的唯一标识,序列弄出来的
      

  4.   


    你真有趣,问你的是 pid、cid 的含义!假定
    收藏表 collect:
    cid; 
    pid; 对应 product.pid
    uid; 对应 user.uid则
    select * 
      from collect, product, user 
      where collect.pid=product.pid and and product.uid=user.uid and collect.uid=用户id
      

  5.   

    连表方便,但是耗资源,建议先查出所有收藏表中的pid、uid,然后循环将pid和uid组织成'1, 2, 3'这种模式的字符串(当然了只需要一次循环就可以将两个组合组合出来),这样在根据sql的 in()方法查出分别查出两个表中的内容,然后再循环将两个数组组合成你需要的,这样对数据库压力大量减小,个人认为这样比较傲麻烦,但是这样比连表要好很多
      

  6.   

    前辈,公司不让用*必须写字段名查shop.uid显示出来的还是登录者的id
      

  7.   

    怎么又多出一个 shop.uid ???
    商品 卖家名 对应
    product.name user.name
      

  8.   

    由于商品名称不随便更改,在收藏表 collect添加 product name。这样减少连表查询或者多次查询!
      

  9.   

    因为是在会员中心里用户查“我的收藏”,根据收藏表里的collect.uid和user.uid,collect.pid和product.pid对应,在从cookie里取登陆的user的id,结果查product.uid(卖家id,外键,连接user.uid),显示的是登陆者的id