복붙노트

[SQL] Mysqli는 2 개의 다른 데이터베이스에서 테이블을 조인

SQL

Mysqli는 2 개의 다른 데이터베이스에서 테이블을 조인

어떻게 두 테이블을 조인하는 쿼리를 실행하려면이 두 연결을 사용할 수 있습니까? yesno.table1 및 sushi.table1? 우리는 그들이 모두 같은 ID를 가지고 ID로 가입 말할 수 있습니다. 나는 어떻게 할 수 있습니까?

// Connect to Yesno Database
$this->yesno_db = new mysqli("red", "yesno", "***", "yesnotmp");

if ($this->yesno_db->connect_errno) {
    throw new Exception('Connection failed: '.$this->yesno_db->connect_error);
}   

// Connect to Sushi Database
$this->sushi_db = new mysqli("red", "sushi", "***", "sushi");

if ($this->sushi_db->connect_errno) {
    throw new Exception('Connection failed: '.$this->sushi_db->connect_error);
}

해결법

  1. ==============================

    1.이 질문은 mysqli (또는 다른 API)과는 아무 상관이 없습니다.

    이 질문은 mysqli (또는 다른 API)과는 아무 상관이 없습니다.

    A는, 다른 데이터베이스, MySQL을 연결하는 사용자로부터 테이블과 조인을 모두 데이터베이스에 대한 SELECT 권한이 있어야 수행합니다.

    이 작업을 수행하는 데, 바로 연결 문에 데이터베이스 중 하나를 선택하고 다른 사용하여 일반적인 도트 구문 주소 :

    SELECT * FROM t1 JOIN db2.t2
    

    말 그대로 귀하의 질문에 대답하기 위해,

    당신은 할 수 없습니다

  2. ==============================

    2.이것은 당신이 그것을 시도하고있는 방법으로 가능하지만,하지 않습니다.

    이것은 당신이 그것을 시도하고있는 방법으로 가능하지만,하지 않습니다.

    첫째, 당신은 두 데이터베이스를 액세스 할 수있는 권한이있는 MySQL 사용자가 필요합니다.

    그럼 당신은 단순히 쿼리의 일환으로 보조 데이터베이스를 참조합니다.

    EG

    // Connect to Database -- dbuser has permissions for database1 and database2
    $this->db = new mysqli("localhost", "dbuser", "***", "database1");
    
    $query = "SELECT t1.*, t2.* 
                  FROM table_one AS t1
                  INNER JOIN database2.table_two as t2 ON ( t1.id = t2.remote_id ) ";
    

    이 데이터베이스가 두 개의 서로 다른 서버에있는 경우 수 없습니다.

  3. ==============================

    3.그것은 아니지만 꽤 가능합니다.

    그것은 아니지만 꽤 가능합니다.

    MySQL은 페더 레이 티드 스토리지 엔진을 지원 효과적으로 실제로 다른 데이터베이스에있는 실제 테이블에 바로 연결 당신의 데이터베이스 중 하나에 테이블 모양을 설정할 수 있도록.

    이 이전 응답 힘 도움말 : -

    MySQL을 - 파이썬을 사용하여 다른 서버에 데이터베이스 사이에 조인?

  4. from https://stackoverflow.com/questions/22296500/mysqli-join-tables-from-2-different-databases by cc-by-sa and MIT license