有三张表:
employee, 列名为employeeid name
jobyear, 列名为employeeid, jobid, jobyearid
jobyearmonth, 列名为jobid, jobyearid, month我需要select出所有的jobyearmonth中的数据,而且前面加上name,请问应该怎么写?

解决方案 »

  1.   

    select c.name,a.* 
    from jobyearmonth a
    left join jobyear b on a.jobyearid=b.jobyearid
    left join employee c on b.employeeid=c.employeeid
      

  2.   

    select name,jobid, jobyearid, month from employee a,jobyear b,jobyearmonth c where a.employeeid = b.employeeid and b.jobyearid = c.jobyearid and b.jobid  = c.jobid
      

  3.   

    employee, 列名为employeeid name
    jobyear, 列名为employeeid, jobid, jobyearid
    jobyearmonth, 列名为jobid, jobyearid, month
    select a.name,c.* from employee a left join jobyear b on a.employeeid=b.emloyeeid
                                      left join jobyearmonth c on b.jobid= c.jobid
      

  4.   


    select name,c.* from employee a,jobyear b,jobyearmonth c
    where a.employeeid=b.employeeid and b.jobid=c.jobid and b.jobyearid=c.jobyearid
      

  5.   


    select employee.name ,jobid,jobyearid,month from jobyearmonth join jobyear on jobyearmonth .jobid=jobyear .jobid and jobyearmonth.jobyearid=jobyear.jobyearid join
    employee on employee.employeeid=jobyear.employeeid
      

  6.   

    更正:
    select employee.name ,jobyearmonth .jobid,jobyearmonth .jobyearid,jobyearmonth .month from jobyearmonth join jobyear on jobyearmonth .jobid=jobyear .jobid and jobyearmonth.jobyearid=jobyear.jobyearid join
    employee on employee.employeeid=jobyear.employeeid
      

  7.   

    但是这样好像有重复的纪录
    如果我直接select * from jobyearmonth,有28条纪录,但是如果一left join的话,就有52条纪录了
      

  8.   

    left join 会返回左边表所有的行