COMPARAR 2 TABELAS MYSQL COM BDS DIFERENTES

TIAGOVARETA 30/11/2012 10:48:02
#415123
Boas pessoal, basicamente preciso de comparar duas tabelas de bases de dados diferentes.
Quero mostrar numa listview os registos da tabela [Ô]chronoforms_contacto[Ô] cujo o email não esteja em nenhum registo da tabela [Ô]tb_contacto[Ô].
Estive a pesquisar e julgo que a sintaxe sql poderia ser:
SELECT * FROM chronoforms_contacto INNER JOIN tb_contacto ON chronoforms_contacto.lbl_email <> tb_contacto.email

O código que tenho no botão para preencher a listview é:

Ligar_novos_contactos()
myCON1.Open()
myCON.Open()
myCMD = New MySql.Data.MySqlClient.MySqlCommand([Ô]SELECT * FROM chronoforms_contacto INNER JOIN tb_contacto ON chronoforms_contacto.lbl_email <> tb_contacto.email[Ô], myCON1)
myDRR = myCMD.ExecuteReader()


[ô]configuração do controle listview
frm_importar.ltw_novos_contactos.Clear()
[ô]modo de visao
frm_importar.ltw_novos_contactos.View = View.Details
[ô]permite o usuario rearranjar as colunas
frm_importar.ltw_novos_contactos.AllowColumnReorder = True
[ô] exibe as caixas de marcacao (check boxes.)
frm_importar.ltw_novos_contactos.CheckBoxes = True
[ô] seleciona um item e subitem quando a seleção é feita
frm_importar.ltw_novos_contactos.FullRowSelect = True
[ô] ordena os itens na list na ordem ascendente
frm_importar.ltw_novos_contactos.Sorting = SortOrder.Ascending
[ô]cria as colunas com os nomes do cabeçalho usando os nomes dos campos da tabela Funcionários
With frm_importar.ltw_novos_contactos

[ô].Columns.Add([Ô]Id[Ô], 50, HorizontalAlignment.Left)
.Columns.Add([Ô]Nome[Ô], 165, HorizontalAlignment.Left)
.Columns.Add([Ô]Contacto[Ô], 90, HorizontalAlignment.Left)
.Columns.Add([Ô]Email[Ô], 160, HorizontalAlignment.Left)
.Columns.Add([Ô]Localidade[Ô], 75, HorizontalAlignment.Left)
.Columns.Add([Ô]Interesse[Ô], 90, HorizontalAlignment.Left)
.Columns.Add([Ô]Data[Ô], 90, HorizontalAlignment.Left)
End With

[ô] percorre a tabela e exibe todos os dados no listview
While myDRR.Read

Dim codigo As String = myDRR.Item(8) [ô]Nome

Dim ls As New ListViewItem(codigo, 0)

ls.SubItems.Add(myDRR.Item(9)) [ô]Contacto
ls.SubItems.Add(myDRR.Item(10)) [ô]Email
ls.SubItems.Add(myDRR.Item(11)) [ô]Localidade
ls.SubItems.Add(myDRR.Item(12)) [ô]Interesse
ls.SubItems.Add(myDRR.Item(2)) [ô]Data

frm_importar.ltw_novos_contactos.Items.Add(ls)
End While


myDRR.Close()
myCON1.Close()
myCON.Close()


A minha questão é que eu uso duas ligações (myCON e myCON1) para aceder as tabelas de diferentes BD[ô]S. E desta forma não vai funcionar porque nesta linha de código:

myCMD = New MySql.Data.MySqlClient.MySqlCommand([Ô]SELECT * FROM chronoforms_contacto INNER JOIN tb_contacto ON chronoforms_contacto.lbl_email <> tb_contacto.email[Ô], myCON1)

Só faço referência a ligação myCON1. Como poderia juntar a myCON?
Será que resulta da forma que estou a descrever?
KERPLUNK 30/11/2012 15:42:39
#415176
Resposta escolhida
São dois BD[ô]s instalados em dois locais diferentes, ou apenas dois schemas diferentes?
TIAGOVARETA 30/11/2012 16:24:55
#415186
Citação:

:
São dois BD[ô]s instalados em dois locais diferentes, ou apenas dois schemas diferentes?



As bases de dados estão no mesmo local (domínio).
TIAGOVARETA 02/12/2012 20:01:48
#415272
Será que alguém me consegue ajudar???
KERPLUNK 02/12/2012 21:49:27
#415275
Então, são dois schemas diferentes, nada mais, certo? Estão rodando no mesmo servidor MySQL, isso?
TIAGOVARETA 03/12/2012 06:50:42
#415286
Citação:

:
Então, são dois schemas diferentes, nada mais, certo? Estão rodando no mesmo servidor MySQL, isso?



Sim exactamente, a situação é que nesta linha onde faço a consulta:

myCMD = New MySql.Data.MySqlClient.MySqlCommand([Ô]SELECT * FROM chronoforms_contacto INNER JOIN tb_contacto ON chronoforms_contacto.lbl_email <> tb_contacto.email[Ô], myCON1)

faço a consulta a duas tabelas (chronoforms_contacto + tb_contacto) mas só chamo a ligação a uma tabela [Ô]myCON1[Ô] e tenho de chamar também a outra [Ô]myCON[Ô]...
KERPLUNK 03/12/2012 08:30:18
#415291
select * FROM
NOME_DO_SCHEMA.NOME_DA_TABELA
INNER JOIN
NOME_DO_OUTRO_SCHEMA.NOME_DA_OUTRA_TABELA
ON ....
TIAGOVARETA 03/12/2012 13:58:33
#415314
Citação:

:
select * FROM
NOME_DO_SCHEMA.NOME_DA_TABELA
INNER JOIN
NOME_DO_OUTRO_SCHEMA.NOME_DA_OUTRA_TABELA
ON ....



Desde já agradecer a sua resposta! Assim sendo o código ficou:

Public Sub Ligar_novos_contactos1()
Try
myCON2 = New MySql.Data.MySqlClient.MySqlConnection([Ô]Server=000.00.00.000;Uid=user;Pwd=pass;[Ô])
Catch ex As MySql.Data.MySqlClient.MySqlException
MsgBox([Ô]Erro inesperado ao abrir a base de dados ![Ô] & ex.Message, MsgBoxStyle.Critical, [Ô]Erro nº [Ô] & ex.Number)
myCON1.Close()
End Try
End Sub

Public Sub comparar_listviews()
Ligar_novos_contactos1()
myCON2.Open()
myCMD = New MySql.Data.MySqlClient.MySqlCommand([Ô]SELECT * FROM oricoms.chronoforms_contacto INNER JOIN contactgest.tb_contacto ON chronoforms_contacto.lbl_email <> tb_contacto.email[Ô], myCON2)
myDRR = myCMD.ExecuteReader()


frm_importar.ltw_novos_contactos.Clear()
frm_importar.ltw_novos_contactos.View = View.Details
frm_importar.ltw_novos_contactos.AllowColumnReorder = True
frm_importar.ltw_novos_contactos.CheckBoxes = True
frm_importar.ltw_novos_contactos.FullRowSelect = True
frm_importar.ltw_novos_contactos.Sorting = SortOrder.Ascending

With frm_importar.ltw_novos_contactos
.Columns.Add([Ô]Nome[Ô], 165, HorizontalAlignment.Left)
.Columns.Add([Ô]Contacto[Ô], 90, HorizontalAlignment.Left)
.Columns.Add([Ô]Email[Ô], 160, HorizontalAlignment.Left)
.Columns.Add([Ô]Localidade[Ô], 75, HorizontalAlignment.Left)
.Columns.Add([Ô]Interesse[Ô], 90, HorizontalAlignment.Left)
.Columns.Add([Ô]Data[Ô], 90, HorizontalAlignment.Left)
End With

[ô] percorre a tabela e exibe todos os dados no listview
While myDRR.Read

Dim codigo As String = myDRR.Item(8) [ô]Nome

Dim ls As New ListViewItem(codigo, 0)

ls.SubItems.Add(myDRR.Item(9)) [ô]Contacto
ls.SubItems.Add(myDRR.Item(10)) [ô]Email
ls.SubItems.Add(myDRR.Item(11)) [ô]Localidade
ls.SubItems.Add(myDRR.Item(12)) [ô]Interesse
ls.SubItems.Add(myDRR.Item(2)) [ô]Data

frm_importar.ltw_novos_contactos.Items.Add(ls)
End While
myDRR.Close()
myCON2.Close()
End Sub

No entanto ao clicar no botão para preencher a listview com a consulta: ([Ô]SELECT * FROM oricoms.chronoforms_contacto INNER JOIN contactgest.tb_contacto ON chronoforms_contacto.lbl_email <> tb_contacto.email[Ô], myCON2)
a aplicação fica a pensar e não passa daqui...
O que será que estou a fazer mal?
Tópico encerrado , respostas não são mais permitidas