选择两个表中的数据

时间:2011-06-02 01:19:56

标签: php mysql sql select

我有两个表:谁包含这些字段:


gmdc_employee

file_id     company_id  employee_id     employee_name   file_description    file_date      file_name              folder_access        upload_date  confirmation
    1        20111253     20080407         Mariel             file1         2000-01-01  agent_masterlist.xls    documents/20111253/     2011-05-16    Pending
    2        20112301     20864125         Keisha             file2         2000-02-01  auto_lapsed.xls         documents/20112301/     2011-05-16    Pending
   11        20111253     65513215          Rovy              file15        2008-01-01  attendancesheet.xls     documents/20111253/     2011-06-01    Pending

gmdc_user

company_id  company_name    employee_id     employee_name   username    password_clear           password_hash              login_number         last_login
 25014462       NCST          20132248          Danica      ncst            ncst         c7b080d11d6766a27c02591f74b2ea4d        3           2011-05-23 11:25:03
 20112301       EAC           20113318          Emilio      eac             each         933dd8674c563081260867dfa95b5e74        4           2011-05-23 11:52:58
 20111253       DLSU          20080040          John        dlsu            dasma        3c26c824914144d0addf0ceb850ed78a        15          2011-06-01 10:45:32

这是我第一次需要在gmdc_employee表中获取项目时使用的查询:'%$ search%'是我的搜索按钮名称和'$ listname% '是我的面板标签(AZ列表)的名称:

select * 
   from gmdc_employee
   where employee_name like '%$search%' 
     AND employee_name like '$listname%'

问题出在我的搜索按钮上。以前,我的搜索按钮只会搜索employee_name(我上面的代码是我使用的代码)。但不幸的是条件发生了变化:(我被问到除了搜索 employee_name (在gmdc_employee表中找到)之外,用户还可以搜索 employee_id < / em> (可在gmdc_employee中找到)和 company_name (可在gmdc_user中找到),但我不知道该怎么做:(我还没有从学校那里学到关于两个表的加入,虽然我学会了一种方法来做到这一点并尝试过。不幸的是它产生了错误的结果。那么我可以给出一个例子吗?

如果用户搜索公司名称​​ DLSU ,输出应如下所示:

employee_id     employee_name   title   file_date    status    confirmation
  20080407        Mariel        file1   2000-01-01   Pending     delete //delete is a link
  65513215         Rovy         file15  2008-01-01   Pending     delete

关于你看到的内容,它搜索并回复公司名称“DLSU”下的文件我希望有人可以在这里帮助我:(我已经尝试了一切,但没有任何方法按照它的方式工作。

这是我试图使用的产生错误输出的东西。 :(它回应了所有需要的数据,并且没有查看只有搜索到的company_name信息应输出的条件:

select 
      a.employee_id,
      a.employee_name, 
      a.file_description,
      a.file_date,
      a.confirmation 
   from 
      gmdc_employee  AS a 
         JOIN gmdc_user AS b 
   WHERE 
          a.employee_name like'%' 
      AND a.employee_id like '%' 
      AND b.company_name like 'DLSU'

2 个答案:

答案 0 :(得分:0)

应该返回您在问题中提供的数据的查询是:

SELECT `e`.`employee_id` ,
       `e`.`employee_name` ,
       `e`.`title` ,
       `e`.`file_date` ,
       `e`.`status` ,
       `e`.`confirmation` AS "status"
FROM `gmdc_employee` `e`
  JOIN `gmdc_user` `u` ON ( `u`.`company_id` = `e`.`company_id` )
WHERE `u`.`company_name` LIKE "DLSU"

答案 1 :(得分:0)

我已经格式化了您的查询,看起来您非常接近......您刚刚没有加入的ON条件

select 
      a.employee_id,
      a.employee_name, 
      a.file_description,
      a.file_date,
      a.confirmation 
   from 
      gmdc_employee  AS a 
         JOIN gmdc_user AS b
            on a.employee_id = b.employee_id
   WHERE 
          ( a.employee_name like'%$search%' 
          OR b.employee_name like '%$search%' )
      AND b.company_name like 'DLSU'

我不确定这是否是由员工ID正确加入...您没有显示任何相同“员工”与“用户”的实例。如果没有“ON”条件,它基本上会创建一个笛卡尔连接(或者直接错误输出)...如果您正在寻找多个条件,您可能还需要逻辑OR ...例如在一个字段中找到的名称或者其他......如果在两者中找到,没问题......