2017-02-08 7 views
1

요약. 나는 2 데이터베이스 (Invoices.gdb 및 Users.gdb) 어떤 송장이 고객에게 연결되어 있는지 볼 수있는 테이블을 얻고 싶습니다 정보 : 나는 테이블에 값을 가져 오기 위해 PHP 코드를 알고 있습니다. 나는 2 개의 데이터베이스 사이에서 나의 LINK를 얻고 어떻게이 쿼리를 실행할 수 있는지 고심하고있다.PDO가있는 2 개의 Firebird 데이터베이스 링크

내 PDO 클래스 내 사용자를 얻기 위해 단지이다

class DatabasePDO{ 
    /** @var PDO */ 
    private static $dbh; 

    static function getInstance(){ 
     $str_conn="firebird:host=localhost;dbname=C:/Users/Desktop/USERS.GDB;charset=UTF8"; 
     try{ 
      self::$dbh = new PDO($str_conn, "username", "password"); 
     } 
     catch(PDOException $e){ 
      echo "Error!: ".$e->getMessage(); 
      die(); 
     } 
     return self::$dbh; 
    } 

(1 개 개만 연결 지금을 포함) (그리고 그것은 작동). 송장 DB를 어떻게 추가 할 수 있습니까?

select * from users.customers as A , invoices.invoice as B 
where a.customers.customerid = b.invoice.customerid 

내가 함께 두 데이터베이스를 병합 할 수 없습니다 :

public static function getInvoices() { 
     $conn = DatabasePDO::getInstance(); 
     $sql = "select * from users.customers as A , invoices.invoice as B 
       where a.customers.customerid = b.invoice.customerid"; 
     $st = $conn->prepare($sql); 
     $st->execute(); 
     $list = array(); 
     while ($row = $st->fetch()) { 
      $invoice= new invoice($row); 
      $list[] = $invoice; 
     } 
     $conn = null; 
     return $list; 
    } 

내가 만들고 싶어 쿼리가이 다음 내 클래스입니다. 그래서 그것은 해결책이 아닙니다. 미리 감사드립니다.

+0

Firebird 또는 Interbase를 사용합니까? 그것들은 같은 것이 아닙니다. –

+0

Firedbird, 죄송합니다. 질문이 바뀔 것입니다 – Steven

답변

2

파이어 버드 데이터베이스가 분리되어 있으며 데이터베이스간에 조인 할 수 없습니다. 가장 좋은 해결책은 두 데이터베이스를 하나로 병합하는 것입니다 (외래 키 제약 조건과 같은 무결성 검사를 수행하는 등의 이점이 있습니다).

두 번째 가장은 송장 데이터베이스에 사용자의 데이터베이스 (또는 적어도 필요한 테이블)을 복사해야하는 것입니다. 명의 사용자에서 인보이스 (예 : 트리거 및 EXECUTE STATEMENT ON EXTERNAL을 사용하거나 동기화 작업을 예약 한 작업)의 변경 사항을 동기화해야합니다.

그렇지 않으면 코드에 직접 참여해야하며 이는 최적 상태가 아닙니다.

+0

2 개의 별도 프로그램 (exe) 용으로 만들어 졌기 때문에 2 개의 데이터베이스를 병합 할 수 없습니다. 그것은 필요한 모든 데이터를 저장하고 거기에서 데이터를 가져 오는 별도의 mysql db를 만드는 솔루션 일 수 있습니까? – Steven

+0

@Steve 다른 프로그램을 위해 만든 곳이라 할지라도 단일 데이터베이스에 데이터를 저장할 수 없다는 것을 의미하지는 않습니다. 또한, MySQL 로의 이동은 어떻게 데이터베이스를 병합하거나 다른 데이터베이스로 데이터를 복사/복제하는 것보다 단순하게 만듭니다. –

+0

가능합니다. 그러나 두 데이터베이스는 매일 업데이트되고 있습니다. 그래서 그것을 최신 상태로 유지하는 해결책을 찾아야 해. – Steven