2017-09-30 1 views
1

MySQL 데이터베이스를 작업 중입니다. 나는 그것에 익숙하지 않기 때문에 나는 문제에 직면하고있다. 문제는 상위 테이블을 참조하는 외래 키로 하위 테이블을 채우는 것입니다. 나는이 두 테이블 다음과 같은 열이자식 테이블을 외래 키로 채우는 방법 - MySql

  • 기본 키 ID을 포함 employee,
  • FIRST_NAME
  • LAST_NAME
  • birth_date

과 0,123,631

  • 키 기본으로 열

    • 심판 다음이 포함표

    employeeId 기본 키 id의를 참조하는 외래 키

  • 책으로을 employId employee 테이블 간단히 말해 동일한 ID를 가진 직원이 여러 권의 책을 빌릴 수 있습니다. 직원 테이블에 데이터를 삽입 할 때 빌려온 테이블에 데이터를 삽입해야 할 때 employeeId 열에 값을 수동으로 삽입해야합니다. 자동으로 채워지는 것이 아닌가요? 또는 나는 외래 키의 개념을 오해하고있다. 나는이 필요

    내 SQL 코드

    $uname = "root"; 
     
        $pass = ""; 
     
        $sname ="localhost"; 
     
        $db ="nady"; 
     
        //Making database connection 
     
        $con = mysqli_connect($sname,$uname,$pass,$db); 
     
    
     
    $t1 = "CREATE TABLE IF NOT EXISTS employee (
     
    \t id smallint(5) unsigned AUTO_INCREMENT NOT NULL, 
     
    \t firstname varchar(30), 
     
    \t lastname varchar(30), 
     
    \t birthdate date, 
     
    \t PRIMARY KEY (id) 
     
    ) ENGINE=InnoDB"; 
     
    $con->query($t1); 
     
    
     
    
     
    
     
    $t2 = "CREATE TABLE IF NOT EXISTS borrowed (
     
    \t ref int(10) unsigned NOT NULL auto_increment, 
     
    \t employeeid smallint(5) unsigned NOT NULL, 
     
    \t book varchar(50), 
     
    \t PRIMARY KEY (ref), 
     
    \t FOREIGN KEY (employeeid) REFERENCES employee(id) ON UPDATE CASCADE ON DELETE CASCADE 
     
    ) ENGINE=InnoDB"; 
     
    $con->query($t2); 
     
    if(!$con->query($t2)){ 
     
    \t echo $con->error; 
     
    } 
     
    
     
    
     
    $i1 = "INSERT INTO employee VALUES(NULL,\"Nadeem\",\"Ahmad\",22)"; 
     
    $con->query($i1); 
     
    
     
    $i2 = "INSERT INTO borrowed VALUES(NULL,1,\"Ahmad\")"; 
     
    $con->query($i2); 
     
    if(!$con->query($i2)){ 
     
    \t echo $con->error; 
     
    }

    간단한; 예를 들어 ID가 이고 직원이 인 직원이 있습니다. 3 권의 책을 빌린 사람. 따라서 빌려온 테이블에서 employeeId 열은 값이 이고 책 이름이 다른 세 개의 행을 갖습니다. 필자가 employeeId 열에 데이터를 삽입 할 때 employeeId 열을 채우는 방법은 무엇입니까? 예를 들어, John은 3 권의 책을 빌려 왔고 ID가 1 인 경우 john의 employeeId를 사용하여 빌린 테이블에 데이터를 삽입하는 방법은 무엇입니까? 나는 그것에 대한 질의가 필요하다. 또한 존이 빌린 책을 검색하기 위해 질의합니다.

  • +0

    차용인의 직원 ID는 직원이 대여 한 책의 ID와 함께 차용 한 양식에서 가져옵니다. – Shadow

    +0

    @Shadow 폼을 통해 채워야합니다. 이 사람 ID가 1 또는 2 또는 3인지 알 수 있습니까? – Nadeem

    +0

    ID와 직원 이름을 쿼리합니다. – Shadow

    답변

    2

    외래 키 (검색 경우 borrowed에서 employId) 열 의 필드가 다른 테이블 (employee에서 id)의 PRIMARY KEY 지칭 나타내는 두 테이블을 연결하는데 사용된다.

    borrowed에 새 줄을 삽입 할 때 해당 줄을 삽입 할 사용자를 지정해야합니다. 당신은 그것을하고있는 사용자를 알아야합니다. 외래 키를 가지고 있다면 그 사용자의 ID가 필요합니다.이 ID는 고유 식별자 여야합니다. 요한이 책을 쓴 것을 삽입하려면 요한의 신분이 1임을 알아야합니다.사용자가 귀하의 employee 테이블에 이미 당신은 자신의 이름과 성을 알고있는 경우

    , 당신은 ... 간단한 선택으로

    SELECT id FROM employee WHERE first_name='John' AND last_name='Smith' 
    

    을 ID를 얻을 수 있습니다 ... 그리고 당신은 할 수 있습니다 얻은 ID로 삽입하십시오.

    는 새 사용자의 경우 새 ID를 얻을 수 employee 테이블에 다시 질의를하지 않고이 작업을 수행하기 위해, borrowed의 새로운 라인을 다음 employee에 먼저 사용자를 추가 새로운 ID를 얻을 후 삽입해야 PHP mysqli::$insert_id/mysqli_insert_id 함수를 사용하면 마지막 쿼리의 PRIMARY 키를 사용할 수 있습니다. 예를 들어 ...

    $con->query("INSERT INTO employee (first_name,last_name) VALUES ('Mark','Whatever')"); 
    $newemployeeid = $con->insert_id; 
    $con->query("INSERT INTO borrowed (employeeid,book) VALUES (".$newemployeeid.",'Awesome Book Title')"); 
    

    내가 당신 그냥이 라인을 변경할 필요가

    +0

    고마워, 그것은 나를 위해 일했다! – Nadeem

    +0

    반가워요! 좋은 하루 되세요. 행복하게 코딩하세요! –

    1

    도움이되기를 바랍니다

    $ employee_id입니다 = $ CON-> INSERT_ID;

    $ I2 = "빌린 값으로 INSERT (NULL,". $ employee_id입니다를. ", \"아마드 \ ")"

    먼저 당신은 당신을 inser_id mysql을 미리 정의 된 기능을 통해 $ employee_id입니다로 지난 삽입 ID를 얻을 차용 테이블 삽입 쿼리에이 $ employee_id를 추가하십시오.

    +0

    감사합니다 @ 쉐라즈는 나를 위해 일했습니다 – Nadeem

    +0

    훌륭합니다. 그것을 지켜라. – sheraz