Q&A

  • Re: 이기종DB간의 Join (예전에 답변했던 사항)


안녕하세요..조복기입니다..



제가 예전에 답변했던 질문이군요..찾아보니까..



델파이헬프 및 델파이메뉴얼에 나와있는 내용입니다..



참고하시기 바랍니다.



질문하시기 전에 기존 데이타를 조회하는 습관을 가지시길 바랍니다..



좋은하루되세요..





--------------------------------------------------------------

안녕하세요..



제가 예전에 델파이메뉴얼에서 본게 기억이나서 헬프를 찾았더니

자세하게 예제까기 나와있네요..

참고로 다른DB안의 table조인은 앨리어스를 가지고

조인을 한답니다. 참고가 되셨는지..



--------------------------------------------------------------

헬프색인 : 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)



--------------------------------------------------------------







하윤철 께서 말씀하시기를...

> Oracle에 있는 테이블의 A 필드를 참조해서 MSSQL에서 조회를 해야 하거든요....

>

> Select AAA.*

> From AAA, BBB // 여기서 AAA : MSSQL BBB : Oracle

> Where AAA.B = BBB.B

> and BBB.A = '델파이'

>

> 보기는 간단하지요??

> 바로 되면 정말 좋겠고요... 안되면 ClientDB를 써서 한다리 건너서라도...

> 아이디어 좀 주세요...

>





4  COMMENTS
  • Profile
    이호선 1999.05.04 21:27
    답변감사합니다.그런데 궁금한것이 더있어서요.

    Word화일이나 다른 문서화일로도 첨부가 가능한지요.

    문서화일은 텍스트와 이미지또는 다른내용이 포함될수 있습니다.

  • Profile
    하윤철 1999.07.19 20:03
    해봤습니다만 안되더만요. 안되는걸 어쩝니까. 다시 물어보는수 밖에요...

    코드를 그대로 올리니 한번 봐주십쇼.

    SELECT

    Substring(SlipMain.Before_Slip_No, 1, 2) + '-' +

    Substring(SlipMain.Before_Slip_No, 3, 8) + '-' +

    Substring(SlipMain.Before_Slip_No, 11, 3) + '-' +

    Substring(SlipMain.Before_Slip_No, 14, 1) as BSN,

    Substring(a.Account, 1, 4) + '-' +

    Substring(a.Account, 5, 2) + '-' +

    Substring(a.Account, 7, 2) + ' ' + a.Account_No_Kor as AccountC,

    b.code_name as mi1,

    c.code_name as mi2,

    d.code_name as mi3,

    e.code_name as mi4,

    f.code_name as mi5,

    SlipMain.Manage_Item_Input1 + ' ' + SlipMain.Manage_Item_Title1 as MIT1,

    SlipMain.Manage_Item_Input2 + ' ' + SlipMain.Manage_Item_Title2 as MIT2,

    SlipMain.Manage_Item_Input3 + ' ' + SlipMain.Manage_Item_Title3 as MIT3,

    SlipMain.Manage_Item_Input4 + ' ' + SlipMain.Manage_Item_Title4 as MIT4,

    SlipMain.Manage_Item_Input5 + ' ' + SlipMain.Manage_Item_Title5 as MIT5,

    SlipMain.Debit_Amount,

    SlipMain.Credit_Amount

    FROM ":s_acctdb:magic.bzin0300" a, //MS-SQL

    ":s_acctdb:magic.bzin0501" b, //MS-SQL

    ":s_acctdb:magic.bzin0501" c, //MS-SQL

    ":s_acctdb:magic.bzin0501" d, //MS-SQL

    ":s_acctdb:magic.bzin0501" e, //MS-SQL

    ":s_acctdb:magic.bzin0501" f, //MS-SQL

    ":s_acctdb:magic.baga0401" SlipMain, //MS-SQL

    (Select INVOICE1 From ":maximo:Invoice" //ORACLE

    Where EnterBy = 'BYEONAJ'

    and Convert(String, Inv.INVOICEDATE) between '19990701'

    and '19990719') Inv

    WHERE Inv.INVOICE1 = SlipMain.Before_Slip_No

    AND a.account = SlipMain.Account

    AND b.class = 'MC'

    AND b.dtail =* a.manage_item1

    AND c.class = 'MC'

    AND c.dtail =* a.manage_item2

    AND d.class = 'MC'

    AND d.dtail =* a.manage_item3

    AND e.class = 'MC'

    AND e.dtail =* a.manage_item4

    AND f.class = 'MC'

    AND f.dtail =* a.manage_item5

    Order By SlipMain.Before_Slip_No, SlipMain.Sequence



    이상은 문법과 함수를 MS-SQL 측면에서 쓴겁니다. 이렇게 하면 :maximo:Invoice 객체를 찾을수 없다고 나옵니다.

    위 쿼리를 Oracle 문법으로 바꿔 쓰면? Convert하고 Outer Join 문법이 달라지겠지요? 그래도 SQL Statement가 비정상 종결
  • Profile
    이정욱 1999.05.04 22:42
    Word파일을 그림으로 저장하실 수 있으면 가능합니다만, 저희는 그 방법을 모르니 불가능하다고 하겠네요.. ^^;



    그림화일이나 텍스트화일만 전송이 가능합니다. 또 QuickReport에서도 가능하구요....



    이호선 wrote:

    > 답변감사합니다.그런데 궁금한것이 더있어서요.

    > Word화일이나 다른 문서화일로도 첨부가 가능한지요.

    > 문서화일은 텍스트와 이미지또는 다른내용이 포함될수 있습니다.





  • Profile
    조복기 1999.07.19 22:17


    안녕하세요..조복기입니다..



    참고가 될 사항만 말씀드리겠습니다.



    이기종간의 테이블조인은 필요한 경우외에는 사용을

    하기가 상당히 애를 먹습니다.. 속도문제때문이죠..



    앨리어스로 연결을 하기때문에 두 DB에 접속을 해야되고...

    잘 아실거라고 생각합니다..



    그런과정과 더불어 아래와같이 여러테이블을 조인한다면

    더 복잡해질거라고 생각이 듭니다.



    sql-server의 7개 테이블과 oracle의 1개테이블인데

    조인시켜주는부분은 한곳이네요..



    sql-server 테이블 조인부분을 하나의 뷰로 만드시구요..(미리)

    1대 1로 조인을 해보시는건 어떤지요?..



    간단한 테이블 1개씩을 조인해서 테스트해보는것도

    하나의 방법이겠죠.. 조인이 되는지 않되는지는..



    말씀하신대로 각 RDB간의 문법이 다소 차이가 있기때문에

    뷰를 적극 활용하라고 말씀드리고 싶네요..



    그냥 참고만 하시기 바랍니다..



    좋은하루되세요..









    하윤철 께서 말씀하시기를...

    > 해봤습니다만 안되더만요. 안되는걸 어쩝니까. 다시 물어보는수 밖에요...

    > 코드를 그대로 올리니 한번 봐주십쇼.

    > SELECT

    > Substring(SlipMain.Before_Slip_No, 1, 2) + '-' +

    > Substring(SlipMain.Before_Slip_No, 3, 8) + '-' +

    > Substring(SlipMain.Before_Slip_No, 11, 3) + '-' +

    > Substring(SlipMain.Before_Slip_No, 14, 1) as BSN,

    > Substring(a.Account, 1, 4) + '-' +

    > Substring(a.Account, 5, 2) + '-' +

    > Substring(a.Account, 7, 2) + ' ' + a.Account_No_Kor as AccountC,

    > b.code_name as mi1,

    > c.code_name as mi2,

    > d.code_name as mi3,

    > e.code_name as mi4,

    > f.code_name as mi5,

    > SlipMain.Manage_Item_Input1 + ' ' + SlipMain.Manage_Item_Title1 as MIT1,

    > SlipMain.Manage_Item_Input2 + ' ' + SlipMain.Manage_Item_Title2 as MIT2,

    > SlipMain.Manage_Item_Input3 + ' ' + SlipMain.Manage_Item_Title3 as MIT3,

    > SlipMain.Manage_Item_Input4 + ' ' + SlipMain.Manage_Item_Title4 as MIT4,

    > SlipMain.Manage_Item_Input5 + ' ' + SlipMain.Manage_Item_Title5 as MIT5,

    > SlipMain.Debit_Amount,

    > SlipMain.Credit_Amount

    > FROM ":s_acctdb:magic.bzin0300" a, //MS-SQL

    > ":s_acctdb:magic.bzin0501" b, //MS-SQL

    > ":s_acctdb:magic.bzin0501" c, //MS-SQL

    > ":s_acctdb:magic.bzin0501" d, //MS-SQL

    > ":s_acctdb:magic.bzin0501" e, //MS-SQL

    > ":s_acctdb:magic.bzin0501" f, //MS-SQL

    > ":s_acctdb:magic.baga0401" SlipMain, //MS-SQL

    > (Select INVOICE1 From ":maximo:Invoice" //ORACLE

    > Where EnterBy = 'BYEONAJ'

    > and Convert(String, Inv.INVOICEDATE) between '19990701'

    > and '19990719') Inv

    > WHERE Inv.INVOICE1 = SlipMain.Before_Slip_No

    > AND a.account = SlipMain.Account

    > AND b.class = 'MC'

    > AND b.dtail =* a.manage_item1

    > AND c.class = 'MC'

    > AND c.dtail =* a.manage_item2

    > AND d.class = 'MC'

    > AND d.dtail =* a.manage_item3

    > AND e.class = 'MC'

    > AND e.dtail =* a.manage_item4

    > AND f.class = 'MC'

    > AND f.dtail =* a.manage_item5

    > Order By SlipMain.Before_Slip_No, SlipMain.Sequence

    >

    > 이상은 문법과 함수를 MS-SQL 측면에서 쓴겁니다. 이렇게 하면 :maximo:Invoice 객체를 찾을수 없다고 나옵니다.

    > 위 쿼리를 Oracle 문법으로 바꿔 쓰면? Convert하고 Outer Join 문법이 달라지겠지요? 그래도 SQL Statement가 비정상 종결
    • 하윤철
      1999.05.05 00:45
      송수정 wrote: > 델파이 3.0을 쓰고 있습니다. > DB에 있는 내용을 레포트로 출력하고자 할때 > 퀵레...
    • Crow2020
    • 1999.07.18 00:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권경부
      1999.07.20 08:51
      쩝.. 프린터가 잘 설정이 안되었다는 이야기네요. 즉, 컴퓨터에 연결되지않은 프린터나 유령프린터를 설...
    • 배재민
    • 1999.05.05 00:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 신인재
      1999.05.05 04:36
      아래의 내용을 살펴보니.. try ...finally.. 의 사용에 대해 이해가 조금 부족한듯 싶습니다. finall...
    • 송기원
    • 1999.07.17 21:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 전철호
      1999.07.19 18:46
      송기원 께서 말씀하시기를... > Tedit에서 현재 caret의 위치를 구할려면 어떻게 해야 합니까? > > 예...
    • 하윤철
      1999.05.05 00:45
      송수정 wrote: > 델파이 3.0을 쓰고 있습니다. > DB에 있는 내용을 레포트로 출력하고자 할때 > 퀵레...
    • 이정환
    • 1999.07.17 18:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 권경부
      1999.07.20 08:49
      0D0A는 완전한 엔터를 입력했을때 들어가는 코드입니다. 문서에는 캐리지리턴과 하드리턴이 있는데 캐리지...
    • 문의득
    • 1999.07.17 16:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하윤철
      1999.05.04 23:44
      1. Tab control을 올려놓고 폼 색상을 바꾸면... 텝들의 색상은 따라서 안바뀌고 윈도우의 칙칙한 회색...
    • 안치봉
      1999.05.05 01:25
      하윤철 wrote: > 1. Tab control을 올려놓고 폼 색상을 바꾸면... > 텝들의 색상은 따라서 안바뀌고 ...
    • 김종호
    • 1999.07.17 10:07
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 김지건
      1999.05.04 23:29
      프로그램이 실행중에 있을때 TalNet.exe라를 실행화일이 죽는 것을 방지하고 싶은데요...방법을 모르겠...
    • 김성동
      1999.07.17 18:04
      SubKeyList := TStringList.Create; 로 변경하세요. TStrings는 Abstract Class이기 때문에 바로 쓸 수 없...
    • 1999.05.05 01:04
      김지건 wrote: > 프로그램이 실행중에 있을때 TalNet.exe라를 실행화일이 > > 죽는 것을 방지하고 싶...
    • 한재아
      1999.05.04 23:28
      먼저fax에 대한 가르침 너무 감사드립니다. 죄송하지만 앞으로도 DELPHI에 대해 재아가 많이 귀챦게 ...
    • 조복기
      1999.07.17 20:27
      안녕하세요..조복기입니다.. 개발하고있는 프로그램이 C/S 환경이라면 스토드프로시져나 뷰등을 적극...
    • 이정욱
      1999.05.06 00:11
      안녕하세요? 음.. 저를 지목하시다니.. 전 사실 DB쪽은 잘 모릅니다. 모.. 시스템도 잘 못하지만.... DbG...
    • 김영애
    • 1999.05.04 05:26
    • 4 COMMENTS
    • /
    • 0 LIKES
    • BDS
      1999.07.17 04:54
      고수님들의 한수 지도를 부탁드리며.... 검색을 하려고 하는데 검색 버튼을 클릭시 다음과 같은 에러가 '...
    • 하윤철
      1999.05.04 23:12
      김영애 wrote: > 이것을 함으로써 보고서가 어렵다는 것을 다시한번 느꼈습니다.. > 이것을 테이블 4개를...
    • 1999.07.18 06:55
      BDS 께서 말씀하시기를... > 고수님들의 한수 지도를 부탁드리며.... > 검색을 하려고 하는데 검색 버튼...
    • rain
      1999.05.04 05:34
      저는 그와 같은 상황에서는 일종의 View를 만들어서 해결합니다. 아니면, 폼의 내용과는 상관없는 SQL...
    • 조복기
    • 1999.07.17 02:35
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 이호선
      1999.05.04 21:27
      답변감사합니다.그런데 궁금한것이 더있어서요. Word화일이나 다른 문서화일로도 첨부가 가능한지요. 문...
    • 하윤철
      1999.07.19 20:03
      해봤습니다만 안되더만요. 안되는걸 어쩝니까. 다시 물어보는수 밖에요... 코드를 그대로 올리니 한번 봐...
    • 이정욱
      1999.05.04 22:42
      Word파일을 그림으로 저장하실 수 있으면 가능합니다만, 저희는 그 방법을 모르니 불가능하다고 하겠네요.....
    • 조복기
      1999.07.19 22:17
      안녕하세요..조복기입니다.. 참고가 될 사항만 말씀드리겠습니다. 이기종간의 테이블조인은 필요한...
    • 이호선
    • 1999.05.04 21:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      1999.05.04 22:42
      Word파일을 그림으로 저장하실 수 있으면 가능합니다만, 저희는 그 방법을 모르니 불가능하다고 하겠네요.....
    • 김영옥
    • 1999.05.04 19:32
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 문보석
      1999.07.17 01:38
      안녕하세요... 인터넷 페이지에 있는 서버,클라이언트 소켓을 가지고 Gif 이미지 전송 프로그램을 ...
    • 구창민
      1999.05.04 21:22
      김영옥 wrote: > 싱그러운 아침입니다. > 다들 어제의 비가 반가웠겠죠... > 다름 아니라 ... 제가 델파...
    • 1999.05.04 21:20
      김영옥 wrote: > 싱그러운 아침입니다. > 다들 어제의 비가 반가웠겠죠... > 다름 아니라 ... 제가 델파...
    • 호의석
    • 1999.07.17 00:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 손창근
      1999.07.17 00:51
      안녕하세요.. 오공이 입니다. 다음 팁은 각 셀에 color을 넣는 Tip입니다. 이걸 이용하시면 원하시는 ...
    • 김영옥
    • 1999.05.04 19:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      1999.05.04 21:22
      김영옥 wrote: > 싱그러운 아침입니다. > 다들 어제의 비가 반가웠겠죠... > 다름 아니라 ... 제가 델파...
    • 1999.05.04 21:20
      김영옥 wrote: > 싱그러운 아침입니다. > 다들 어제의 비가 반가웠겠죠... > 다름 아니라 ... 제가 델파...
    • 델초보
    • 1999.07.17 00:05
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이상준
      1999.07.17 02:21
      델초보 께서 말씀하시기를... > 델파이에서 win.ini말고 일반 .ini화일을 읽어올때 > 섹션명만 읽어오는 ...
    • 고혜정
    • 1999.05.04 18:50
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 신진욱
      1999.07.06 09:05
      고혜정 께서 말씀하시기를... > 다음과 같은 에러가 발생해서 도움을 청하려 합니다. > Error : Cannot ...
    • 1999.05.04 21:17
      고혜정 wrote: > 다음과 같은 에러가 발생해서 도움을 청하려 합니다. > Error : Cannot make a visible...
    • 이정욱
      1999.05.04 21:17
      이미 보여주고 있는 창을 또 ShowModal을 하시려는것 같습니다. 일단 그 폼의 Visible을 False로 주시고 S...