Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql如何连接2个表和1个表本身_Php_Mysql - Fatal编程技术网

Php Mysql如何连接2个表和1个表本身

Php Mysql如何连接2个表和1个表本身,php,mysql,Php,Mysql,我有一个表名tbl\u user此表包含 db_uid db_fname db_lname db_responsibleid db_email 1 xxx yyy 0 xxx@x.com 2 ttt eee 1 ttt@x.com 3 ggg hhh 2

我有一个表名
tbl\u user
此表包含

db_uid   db_fname   db_lname   db_responsibleid     db_email
  1         xxx       yyy            0             xxx@x.com
  2         ttt       eee            1             ttt@x.com
  3         ggg       hhh            2             ggg@x.com
另一个表是
tbl_task
此表包含

db_taskid    db_mytask    db_desc   db_status   db_emailed   db_userid
   1           test       test        Done          0           2
   2           bnvc       sdcs        Done          0           3
   3           bcv        sdc         Scheduled     0           3
现在我想得到这个结果:

  taskid   mytask   desc   Status   staffname   responsiblename    remail
    1       test    test   Done      ttt eee      xxx yyy        xxx@x.com
    2       bnvc    sdcs   Done      ggg hhh      ttt eee        ttt$x.com
taskid   mytask   desc   Status   staffname   responsiblename    remail
  1       test    test   Done      ttt eee        NULL             NULL
  2       bnvc    sdcs   Done      ggg hhh        NULL             NULL
此结果用于选择具有
db\u status='Done'
db\u emailed='0'的所有任务。
用户姓名和该用户的负责人姓名以及负责人的电子邮件

我使用此查询,但无法获取负责人的姓名和电子邮件地址

select 
    tbl_task.db_mytask,
    tbl_task.db_desc,
    tbl_task.db_taskid,
    tbl_task.db_status,
    concat(tbl_user.db_fname,' ' ,tbl_user.db_lname) as name,
    concat(user.db_fname,' ' ,user.db_lname) as uname,
    user.db_email
from tbl_task 
left join tbl_user
    on tbl_task.db_userid=tbl_user.db_uid
left join tbl_user as user
    on user.db_uid=user.db_responsibleid
where 
    (tbl_task.db_emailed='0') 
    and 
    (tbl_task.db_status='Done')
当前结果为:

  taskid   mytask   desc   Status   staffname   responsiblename    remail
    1       test    test   Done      ttt eee      xxx yyy        xxx@x.com
    2       bnvc    sdcs   Done      ggg hhh      ttt eee        ttt$x.com
taskid   mytask   desc   Status   staffname   responsiblename    remail
  1       test    test   Done      ttt eee        NULL             NULL
  2       bnvc    sdcs   Done      ggg hhh        NULL             NULL

我如何解决这个问题?有什么建议或帮助吗

您在第二个左连接上连接了错误的列(我在tbl_用户上使用了user1和use2别名)

您使用的是
user.db\u uid=user.db\u responsibleid
,但应该
tbl\u user.db\u uid=user.db\u responsibleid

  select 
    tbl_task.db_mytask,
    tbl_task.db_desc,
    tbl_task.db_taskid,
    tbl_task.db_status,
    concat(user1.db_fname,' ' ,user1.db_lname) as name,
    concat(user2.db_fname,' ' ,user2.db_lname) as uname,
    user2.db_email
  from tbl_task 
  left join tbl_user as user1 on tbl_task.db_userid=user1.db_uid
  left join tbl_user as user2 on user2.db_uid=user1.db_responsibleid
  where tbl_task.db_emailed='0'
  and tbl_task.db_status='Done'
您可以尝试此查询。 检查它是否符合您的要求

select
    tbl_task.db_taskid,
    tbl_task.db_mytask as mytask, 
    tbl_task.db_desc,    
    tbl_task.db_status,
    concat(tbl_user.db_fname,' ' ,tbl_user.db_lname) as name,
    concat(users.db_fname,' ' ,users.db_lname) as responsiblename, 
    users.db_email as remail
from tbl_user AS users 
    RIGHT OUTER JOIN tbl_user ON users.db_uid = tbl_user.db_responsibleid 
    RIGHT OUTER JOIN tbl_task ON tbl_user.db_uid = tbl_task.db_userid
where  (tbl_task.db_emailed='0') and (tbl_task.db_status='Done')

我在上面发布了与我当前结果相同的结果。我没有更新负责人的姓名和他的电子邮件回复。。第二个左联接上的反向联接表