Выбор данных в двух таблицах - PullRequest
2 голосов
/ 02 июня 2011

У меня есть две таблицы: кто содержит эти поля:


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% - мое имя для вкладок панели (список А-Я):

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

Проблема в кнопке поиска.Ранее моя кнопка поиска будет искать только имя сотрудника (мой код выше - тот, который я использовал, и который работает).Но, к сожалению, условия изменились :( Меня спросили, что кроме поиска employee_name (найденного в таблице gmdc_employee), пользователь также может искать employee_id (который находится в 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". Я надеюсь, что кто-то может помочь мне здесь:(Я уже все перепробовал, но ничего не работает так, как предполагалось.

Это то, что я пытался использовать, что дает неправильные результаты. :( Он повторил все необходимые данные, где и не смотрел в условияхn что должна выводиться только информация о поисковом имени компании:

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 голосов
/ 02 июня 2011

Я отформатировал ваши запросы, и похоже, что вы были очень близки ... у вас просто не было условия 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'

Я не совсем уверен, что это правильное соединение по идентификатору сотрудника или нет ... вы не показываете ни одного экземпляра "сотрудник" против "пользователя". Без условия «ВКЛ», в основном будет создаваться декартово соединение иначе (или с прямой ошибкой) ... Вы также можете захотеть логически ИЛИ, если вы ищете несколько критериев ... таких как имя, найденное в одном поле ИЛИ другой ... если найден в обоих, нет проблем ...

0 голосов
/ 02 июня 2011

Запрос, который должен вернуть данные, которые вы указали в Вопросе:

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...