select a.* , b.* from stock a, invent b where a.pmno = b.pmno and mapmno = 'a001'用户输入的pmno是a001?应是mapmno = 'a001'吧?

解决方案 »

  1.   

    mapmno在stock表中的记录这句话什么意思?表述的有问题吧
      

  2.   

    多谢1楼,不过,用户只是知道pmno,所以不能用mapmno。
    当然,如果能直接用mapmno来查询,那这个问题就太简单了。
      

  3.   

    select a.* , b.* from stock a , invent b where a.pmno = b.pmno and b.mapmno in (select mapmno from invent where pmno = 'a001')
    不知道你foxpro里面能不能这么用?
      

  4.   

    我再解释一下吧,各位可以这么理解:
    1 表结构和数据如顶楼所示。
    2 我是要从stock表中查询数据,假设我现在输入的是a001
    3 从invent表中找出pmno=a001的mapmno是多少?(是a001)
    4 从invent表中找出mapmno=a001的pmno有哪些?(有a001,a002,a003)
    5 筛选stock表中,只要pmno是第4步所查询的结果的,都选出来。 (即筛选pmno为a001,a002的记录)请各位帮忙! thanks
      

  5.   

    create table stock(pmno varchar(10) , qty int)
    insert into stock values('a001' ,5) 
    insert into stock values('a002' ,6) 
    insert into stock values('b002' ,3) 
    create table invent(pmno varchar(10) ,mapmno varchar(10) , dpname varchar(20))
    insert into invent values('a001' ,'a001' , '物品a_素材') 
    insert into invent values('a002' ,'a001' , '物品a_半成品 ')
    insert into invent values('a003' ,'a001' , '物品a_成品')
    goselect a.* , b.* from stock a , invent b where a.pmno = b.pmno and b.mapmno in (select mapmno from invent where pmno = 'a001')drop table stock , invent /*
    pmno       qty         pmno       mapmno     dpname               
    ---------- ----------- ---------- ---------- -------------------- 
    a001       5           a001       a001       物品a_素材
    a002       6           a002       a001       物品a_半成品 (所影响的行数为 2 行)
    */
      

  6.   

    多谢6楼,不过,正如你所说,我还得想办法 放到vfp上试试。
    谢谢!
      

  7.   

    如果vfp不认IN,就把后面那段做个子查询.