데이타베이스A, 데이타베이스B 가 있습니다.
A 데이타베이스에는 table1,... B 데이타베이스에는 table2,...
현재 데이타베이스 A를 열어서 데이타베이스 B의 table2를 열고 싶습니다.
이렇게 서로 다른 데이타베이스의 테이블을 참조하거나 열때
어떤 방법이 사용되어 지는지... 원래 방법이 없는 건가요?
서로 다른 A데이타베이스의 테이블에서 B데이타베이스의 테이블과
관계를 맺을려고 하는데 터무니 없는 생각을 가지고 있는건가요?
아니면 어떻게 해야하는지 아시는분 답변 바랍니다.
저는 델파이 4.0 C/S 버전에서 해보았습니다.
지금은 제가 해본 소스는 없고 아래에 도움이 될만한 글을 올립니다.
좋은 하루 되세요.
//////////////////////////////////////////////////////////////////////////////////
<< Delphi Client/Server 포함물 >>
* 새로운! SQL Link 2.5 - Oracle, Sybase, MS SQL Server, Informix
그리고 InterBase를 위한 고 성능의 드라이버 ; Local 과 Remote
SQL 데이타를 사용하거나 최신의 SQL Query 를 이용하는
Heterogeneous Joins 기능 탑재
//////////////////////////////////////////////////////////////////////////////////
델파이 4.0 도움말
Heterogeneous joins
Joins two tables from different databases.
SELECT column_list
FROM ":database_reference:table_reference",
":database_reference:table_reference" [,
":database_reference:table_reference"...]
WHERE predicate [AND predicate...]
Description
Use a heterogeneous join to join two tables that reside in different databases. The joined tables may be of different types (like dBASE to Paradox or Paradox to InterBase), but you can only join tables whose database types are accessible through the BDE (local, ODBC, or SQL Links). A hetergeneous join may be any of the joins supported by local SQL. The difference is in the syntax for the table reference: the database containing each table is specified in the table reference, surrounded by colons and the whole reference enclosed in quotation marks. The database specified as part of the table reference may be a drive and directory reference (for local tables) or a BDE alias.
SELECT *
FROM ":DBDEMOS:customer.db" C, ":BCDEMOS:orders.db" O
WHERE (C.custno = O.custno)
//////////////////////////////////////////////////////////////////////////////////
인포북출판사의 책 '델파이4 모든것책'에서
델파이는 하나 이상의 데이터베이스의 테이블을 사용하는 이종 쿼리를 지원한다. 예를 들어 오라클, 사이베이스의 테이블과 로컬 디베이스 테이블을 포함한 쿼리가 가능하다. 이렇게 하려면 각각의 서버에서만 지원한는 확자 SQL 문법을 쓰면 안된다. 이종 쿼리를 생성하려면 로컬 디렉토리를 참조하는 BDE 앨리어스를 정의하고 쿼리 컴포넌트의 데이터베이스 Name 프로터티를 그 앨리어스로 설정한다. BDE 앨리어스의 정의는 데이터베이스 탐색기(Database Explorer)를 이용하면 된다. 각각의 데이터베이스에 대해 분리된 BDE 앨리어스를 정의하고, SQL 프로퍼티에서 실행할 SQL 문장을 지정한다. Params 프로포티를 설정하면 Prepare, Open, ExecSQL로 쿼리를 실행하면 된다 예를 들어, CUSTOMER 테이블을 가지고 있는 오라클 데이터베이스의 앨리어스를 Oracle1, ORDERS 테이블을 가지고 있는 사이베이스 데이터베이스의 앨리어스를 Sysbase1이라고 할 때 두 테이블을 이용한 간단한 쿼리를 다음에 적어 보았다.
SELECT O.CUSTNO, S.ORDERNO
FROM ":Oracle1:CUSTOMER" O, ":Sysbase1:ORDERS" S
WHERE O.CUSTNO = S.CUSTNO
//////////////////////////////////////////////////////////////////////////////////
초보자 wrote:
> 데이타베이스A, 데이타베이스B 가 있습니다.
> A 데이타베이스에는 table1,... B 데이타베이스에는 table2,...
> 현재 데이타베이스 A를 열어서 데이타베이스 B의 table2를 열고 싶습니다.
> 이렇게 서로 다른 데이타베이스의 테이블을 참조하거나 열때
> 어떤 방법이 사용되어 지는지... 원래 방법이 없는 건가요?
>
> 서로 다른 A데이타베이스의 테이블에서 B데이타베이스의 테이블과
> 관계를 맺을려고 하는데 터무니 없는 생각을 가지고 있는건가요?
>
> 아니면 어떻게 해야하는지 아시는분 답변 바랍니다.
>
>
>