복붙노트

[SQL] SQLite는 - 어떻게 다른 데이터베이스에서 테이블을 조인합니까?

SQL

SQLite는 - 어떻게 다른 데이터베이스에서 테이블을 조인합니까?

나는 SQLite 데이터베이스를 사용하고, 모든 것이가 예상대로 작동하는 응용 프로그램이 있습니다. 나는 두 번째 SQLite는 데이터베이스를 필요로 새로운 기능을 추가하는 과정에서 지금 해요,하지만 난 다른 데이터베이스에서 테이블을 조인하는 방법을 알아내는 힘든 시간을 보내고 있습니다.

누군가가이 일 좀 도와 수 있다면 정말 감사하겠습니다!

편집 : 허용 대답에 언급 된대로 데이터베이스를 연결 할 때 언어에 적응 할 수있는 예를 들어, 경우에이 질문을 참조하십시오.

해결법

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

    1.SQLite는의 빌드에 활성화 된 연결하는 경우, 당신은이 키워드 ATTACH 사용하여 현재 연결에 다른 데이터베이스 파일을 첨부 할 수 있습니다 (대부분의 빌드에가 있어야한다). 부착 할 수 데시벨의의의 수에 제한은 컴파일 시간 설정 (SQLITE_MAX_ATTACHED), 10 현재 기본값이지만,이 역시 당신이 빌드에 따라 다를 수 있습니다. 글로벌 제한은 125입니다.

    SQLite는의 빌드에 활성화 된 연결하는 경우, 당신은이 키워드 ATTACH 사용하여 현재 연결에 다른 데이터베이스 파일을 첨부 할 수 있습니다 (대부분의 빌드에가 있어야한다). 부착 할 수 데시벨의의의 수에 제한은 컴파일 시간 설정 (SQLITE_MAX_ATTACHED), 10 현재 기본값이지만,이 역시 당신이 빌드에 따라 다를 수 있습니다. 글로벌 제한은 125입니다.

    attach 'database1.db' as db1;
    attach 'database2.db' as db2;
    

    당신은 키워드와 연결된 모든 데이터베이스를 볼 수 있습니다

    .databases
    

    그런 다음 다음을 수행 할 수 있어야한다.

    select
      *
    from
      db1.SomeTable a
        inner join 
      db2.SomeTable b on b.SomeColumn = a.SomeColumn;
    

    "[t] 그가 데이터베이스 이름 주 및 임시 임시 테이블 및 기타 임시 데이터 오브젝트를 보유 할 기본 데이터베이스 및 데이터베이스 위해 예약되어 있습니다. 이러한 데이터베이스 이름 모두가 모든 데이터베이스 연결을 위해 존재하고 첨부 파일에 사용되어서는 안된다"고주의.

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

    2.다음은이 질문을 완료하는 C # 예제입니다

    다음은이 질문을 완료하는 C # 예제입니다

    /// <summary>
    /// attachSQL = attach 'C:\\WOI\\Daily SQL\\Attak.sqlite' as db1 */
    /// path = "Path of the sqlite database file
    /// sqlQuery  = @"Select A.SNo,A.MsgDate,A.ErrName,B.SNo as BSNo,B.Err as ErrAtB from Table1 as A 
    ///                    inner join db1.Labamba as B on 
    ///                    A.ErrName = B.Err";
    /// </summary>
    /// <param name="attachSQL"></param>
    /// <param name="sqlQuery"></param>
    public static DataTable GetDataTableFrom2DBFiles(string attachSQL, string sqlQuery)
    {
        try
        {
            string conArtistName = "data source=" + path + ";";
            using (SQLiteConnection singleConnectionFor2DBFiles = new SQLiteConnection(conArtistName))
            {
                singleConnectionFor2DBFiles.Open();
                using (SQLiteCommand AttachCommand = new SQLiteCommand(attachSQL, singleConnectionFor2DBFiles))
                {
                    AttachCommand.ExecuteNonQuery();
                    using (SQLiteCommand SelectQueryCommand = new SQLiteCommand(sqlQuery, singleConnectionFor2DBFiles))
                    {
                        using (DataTable dt = new DataTable())
                        {
                            using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(SelectQueryCommand))
                            {
                                adapter.AcceptChangesDuringFill = true;
                                adapter.Fill(dt);
                                return dt;
                            }
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Use Process Exception method An error occurred");
            return null;
        }
    
    }
    
  3. ==============================

    3.글쎄, 난 SQLite는과 많은 경험이없는 단일 쿼리에서 두 데이터베이스에 액세스 할 수 있습니다.

    글쎄, 난 SQLite는과 많은 경험이없는 단일 쿼리에서 두 데이터베이스에 액세스 할 수 있습니다.

    당신이 뭔가를 할 수 있습니다 :

    select name from DB1.table1 as a join DB2.table2 as b where a.age = b.age;
    

    SQLServer에 같은 데이터베이스에서이 계층 적 방식으로 다른 데이터베이스에 액세스 할 수 있습니다, 이것은 또한 SQLite는 작동한다.

    나는 당신이 1 개 이상의 데이터베이스와 sqlite가의 인스턴스를 시작할 수있을 것 같아요!

  4. from https://stackoverflow.com/questions/6824717/sqlite-how-do-you-join-tables-from-different-databases by cc-by-sa and MIT license