GOOD表 商品表
ID GOOENAME  
1    香蕉
2    苹果
3    栗子RECOED表 购买信息表
ID GOODID USERID
1    1      1
2    2      1查询USERID=1的信息如下
ID GOODNAME STATE
1    香蕉    1     已购买
2    苹果    1     已购买
3    栗子    0     未购买

解决方案 »

  1.   

    GOOD表   现有商品表
    ID GOOENAME 
    1     香蕉
    2     苹果
    3     栗子RECOED表  购买信息表
    ID GOODID USERID
    1      1       1
    2      2       1此表表示userID为1的用户购买了商品1和商品2 即购买了香蕉和苹果要求查出如下结构
    ID GOODNAME STATE
    1     香蕉         1      已购买
    2     苹果         1      已购买
    3     栗子         0      未购买查询的结构为userID=1的用户查看产品信息表的时候可以看到每件产品的购买状态
    其购买了香蕉和苹果在产品信息列表中可以直观地显示出来如购买了即显示已购买
    未购买显示未购买 
      

  2.   

    SELECT A.*,
           NVL(B.USERID, 0) STATE,
           DECODE(B.USERID, NULL, '未购买', 1,'已购买') STATENAME
      FROM GOOD A, RECOED B
     WHERE B.GOODID(+) = A.ID这是ORACLE的查询语句
      

  3.   

    来蹭2楼的,Oracle又一写法select a.*,
           case
             when b.userid is null then
              0
             else
              1
           end state,
           case
             when b.userid is null then
              '未购买'
             else
              '已购买'
           end statename
      from good a
      left join recoed b
        on a.id = b.goodid
      

  4.   

    没试过SF那么写过!!!2楼应该很是happy!
      

  5.   

    CASE 写法确实在效率上更高一些 但是左连接貌似也没什么问题吧?
      

  6.   

    DECODE是不是多值匹配函数啊,而且多于两对匹配的可以吗?
      

  7.   

    语法没有问题。呵呵。比直接用left join省事多了,不过这种方式要确保版本一定智支持
      

  8.   

    语法没有问题。呵呵。比直接用left join省事多了,不过这种方式要确保版本一定智支持