2013-04-16 1 views
0

문제전략은 내가 두 개의 데이터베이스 user_works 데이터베이스 및 가격 데이터베이스가

  • 사랑하는 테이블에서 사랑하는 데이터베이스에서 데이터를 얻을 수 있습니다.
  • 나는 두 테이블을 조인 먹고 싶어
  • 내가 지금

    • I 1 호 user_works까지 한 일을 user_works에

  • 을 user_id를 사용하여 가격 데이터베이스에 데이터베이스 & rent_table 인 user_table db.
  • user_table에서 ID를 가져옵니다.

    $user_id = select user_id fron user_table WHERE name=abc 
    

    DBOBJECT의 user_works의 DB에 $의 USER_ID를 전달하고 가져 오는 사용자 ID 다음

    $rent = select user_id,rent from rent_table WHERE user_id IN ($user_ids) 
    

    통과 $의 임대료 :

  • 그런 다음 가격 dB

예에서 rent_table하기 위해 ID를 통과 dbObject 가격 데이터베이스 PHP 응용 프로그램에서이 작업을 수행하려고합니다.

더 좋은 방법이 있나요?

create extension dblink; 

또는 : 가격 데이터베이스는 가격 데이터베이스 연결에서

+0

mysql 또는 postgresql? –

+0

postgresql을 사용하고 있습니다 – Abhishek

+0

"* diff * 데이터베이스"란 무엇입니까? –

답변

1

사용 DBLINK가

select r.* 
from 
    dblink(
     'dbname=user_works password=password user=user', 
     $$ select user_id from user_table where name = 'abc' $$ 
    ) as u(user_id int) 
    inner join 
    rent_table r on r.user_id = u.user_id 

당신은 수퍼 유저로 DBLINK 확장을 만들 필요가 등등 임시 테이블을 사용하여처럼 정말 무겁다 원격 데이터베이스에서 로컬 뷰를 생성하십시오.

create view user_table as 
select * 
from 
    dblink(
     'dbname=user_works password=password user=user', 
     $$ select user_id, name from user_table $$ 
    ) as t(user_id int, name text) 
; 

이제 조회하십시오 e 로컬 :

select * from user_table where name = 'abc'; 
+0

만들 수있는 임시 테이블과 같은 것을 사용할 수 있으며 그 테이블 위에 조인 할 수 있습니까? 가능한가요 ??? – Abhishek

+0

@Abhishek 편집 됨. 같은 방법으로 임시 테이블을 만들 수도 있지만 뷰가 더 좋을 것이라고 생각합니다. –

관련 문제