tablas tabla servidores relacionar otra inner entre diferentes datos cruzar consultar consulta conectar bases sql database sqlite join

servidores - SQLite: ¿cómo unir tablas de diferentes bases de datos?



inner join sql dos bases datos (3)

Tengo una aplicación que usa una base de datos SQLite y todo funciona como debería. Ahora estoy en el proceso de agregar nuevas funcionalidades que requieren una segunda base de datos SQLite, pero estoy teniendo dificultades para encontrar la forma de unir las tablas de las diferentes bases de datos.

Si alguien puede ayudarme con esto, ¡realmente lo agradecería!

Editar: consulte esta pregunta para ver un caso de ejemplo que puede adaptar a su idioma al adjuntar bases de datos como se menciona en la respuesta aceptada.


Aquí hay un ejemplo de C # para completar esta pregunta

/// <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; } }


Bueno, no tengo mucha experiencia con SQLite, tienes que acceder a ambas bases de datos en una sola consulta.

Puedes tener algo como:

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

En bases de datos como SQLServer puede acceder a otras bases de datos de esta manera jerárquica, esto también debería funcionar para SQLite.

¡Creo que puedes iniciar una instancia de sqlite con más de 1 base de datos!


Si se activated ATTACH en su compilación de Sqlite (debe estar en la mayoría de las compilaciones), puede adjuntar otro archivo de base de datos a la conexión actual utilizando la palabra clave ATTACH . El límite en el número de db''s que se pueden adjuntar es una configuración de tiempo de compilación ( SQLITE_MAX_ATTACHED ), que actualmente está predeterminada en 10, pero esto también puede variar según la compilación que tenga. El límite global es 125.

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

Puede ver todas las bases de datos conectadas con palabra clave

.databases

Entonces deberías poder hacer lo siguiente.

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

Tenga en cuenta que "los nombres de bases de datos main y temp están reservados para la base de datos primaria y la base de datos para albergar tablas temporales y otros objetos de datos temporales. Ambos nombres de bases de datos existen para cada conexión de base de datos y no deben utilizarse para el archivo adjunto".