A表
jobid comid jobname B表
pid name sex age edu work1 work2 work3C表
cid comid companyname comanyinfo求1:
根据comid传入的参数查询jobname=work1 or jobname=work2 or jobname=work3
结果显示name sex age edu jobname求2:
根据name传入的参数查询work1=jobname or work2=jobname or work3=jobname
结果显示companyname companyinfo jobname

解决方案 »

  1.   

    求1: 
    根据comid传入的参数查询jobname=work1 or jobname=work2 or jobname=work3 
    结果显示name sex age edu jobname 
    select b.name,b.sex,b.age,b.edu,b.jobname 
    from b,a
    where b.work1 = a.jobname
    or b.work2 = a.jobname
    or b.work3 = a.jobname
    and comid=888
      

  2.   

    求2: 
    根据name传入的参数查询work1=jobname or work2=jobname or work3=jobname 
    结果显示companyname companyinfo jobname
    select companyname,companyinfo,jobname
    from c 
    where comid in 
    (
    select distinct comid
    from b,a
    where b.work1 = a.jobname
    or b.work2 = a.jobname
    or b.work3 = a.jobname
    and b.name='Bill Gates'
    )
      

  3.   

    当然可以不用in,有些朋友建议用join提高效率(如果有百万条记录的话)select companyname,companyinfo,jobname
    from c inner jion 
    (
    select distinct comid
    from b,a
    where b.work1 = a.jobname
    or b.work2 = a.jobname
    or b.work3 = a.jobname
    and b.name='Bill Gates'
    ) d on c.comid=d.comid
      

  4.   

    求1解答:
    通过存储过程的输入输出参数解答
    create procedure test_proc 
     @comid char(4),
     @jobname char(100) output
    as 
    select @jobname=jobname from A where comid=@comid
    declare @jobname char(100)
    exec test_proc '004' ,@jobname
    select name,sex,age,edu,jobname from B where (work1=@jobname or work2=@jobname or work3=@jobname)
    求2不知B表和C表有何关系
      

  5.   

    请问4楼和5楼的语句中,C表没有jobname字段啊,是不是您的语句需要改动一下啊