2 Stimmen

Auswählen von Daten in zwei Tabellen

Ich habe zwei Tabellen: Die eine enthält diese Felder:


gmdc_mitarbeiter

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_benutzer

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

Dies ist die Abfrage, die ich verwendet habe, als ich zum ersten Mal Elemente in meinen gmdc_employee-Tabellen abrufen musste: die '%$Suche%' ist mein Name für meine Suchschaltfläche und '$Listenname%' ist mein Name für die Registerkarten meines Panels (A-Z-Liste):

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

Das Problem liegt in meiner Suchfunktion. Vorher sucht meine Suchschaltfläche nur nach dem Mitarbeiternamen (mein obiger Code ist der, den ich verwendet habe und der funktioniert). Aber die Bedingungen haben sich leider geändert :( Ich wurde gefragt, ob ich neben der Suche nach dem mitarbeiter_name (zu finden in der Tabelle gmdc_employee) kann der Benutzer auch suchen nach mitarbeiter_id (die sich in der Datei gmdc_employee befindet) und unternehmen_name (die in gmdc_user zu finden ist), aber ich weiß nicht, wie ich das machen soll :( Ich habe in der Schule noch nicht gelernt, wie man zwei Tabellen verbindet, obwohl ich eine Möglichkeit dazu gelernt und ausprobiert habe. Leider hat es zu falschen Ergebnissen geführt. Darf ich also ein Beispiel geben?

Wenn der Nutzer nach dem Firmennamen gesucht hat DLSU sollte die Ausgabe wie folgt aussehen:

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

was Sie sehen, es sucht und echoiert Dateien unter dem Firmennamen "DLSU" Ich hoffe, jemand kann mir hier helfen :( Ich habe schon alles versucht, aber nichts funktioniert so, wie es sollte.

Dies ist, was ich versucht, verwendet, die falsche Ausgaben produziert :( es echoed alle Daten benötigt, wo und sah nicht in der Bedingung, dass nur die gesuchte company_name info ausgeben sollte:

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'

0voto

Luke Stevenson Punkte 10282

Eine Abfrage, die die von Ihnen in der Frage angegebenen Daten zurückgeben sollte, lautet:

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"

0voto

DRapp Punkte 45486

Ich habe Ihre Abfragen formatiert, und es sieht so aus, als wären Sie sehr nahe dran... Sie hatten nur nicht die ON-Bedingung für Ihre Verknüpfung

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'

Ich bin nicht wirklich sicher, dass dies die richtige Verknüpfung durch die Mitarbeiter-ID ist oder nicht... Sie zeigen keine Instanzen der gleichen "Mitarbeiter" vs "Benutzer". Ohne "ON"-Bedingung, seine im Grunde gehen, um eine kartesische Verknüpfung andernfalls erstellen (oder gerade heraus Fehler)... Sie können auch logisch ODER, wenn Sie für mehrere Kriterien suchen... wie der Name in einem Feld gefunden ODER das andere... wenn in beiden gefunden, kein Problem...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X