Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

beststorm

Query dificíl

Recommended Posts

Estou querendo montar uma query meio bizarra, e queria saber se alguém pode ajudar

 

Tenho um website que faz controle de contas de um jogo, só que o jogo é composto por 3 subservidores ( cada subservidor tem a mesma estrutura de banco de dados, ou seja, 3 bancos de dados diferentes com exatamente as mesmas tabelas, porém dados diferentes)

 

Alem disso, tem um outro banco de dados que serve pra controle do site, que tem um cadastro da conta geral do site, e pela conta geral você consegue administrar as contas de jogo.

 

schemam.png

 

O objetivo é listar as contas do jogo que ficam no database do servidor pertencentes a conta do site que é representada pela tabela accounts, e pra cada registro "accounts_game.account" = "accounts.id", obter o banco de dados a ser usado (que será descoberto através do campo destacado em amarelo servers."server_database") e por fim obter 1 registro da tabela server1.login pra cada registro em accounts_game

 

 

OBS: o campo da tabela do jogo é server1.login.account_id, server2.login.account_id, server3.login.account_id

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ideia é essa:

mysql> create schema server1 ; create schema server2 ; create schema server3 ;
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)

mysql> use server1 ; create table login ( id integer , login varchar ( 25 ) ) ;
Database changed
Query OK, 0 rows affected (0.05 sec)

mysql> use server2 ; create table login ( id integer , login varchar ( 25 ) ) ;
Database changed
Query OK, 0 rows affected (0.07 sec)

mysql> use server3 ; create table login ( id integer , login varchar ( 25 ) ) ;
Database changed
Query OK, 0 rows affected (0.09 sec)

mysql> insert into server1.login ( id , login ) values ( 1 , '123' ) ;
Query OK, 1 row affected (0.00 sec)

mysql> insert into server2.login ( id , login ) values ( 1 , '456' ) ;
Query OK, 1 row affected (0.00 sec)

mysql> insert into server3.login ( id , login ) values ( 1 , '789' ) ;
Query OK, 1 row affected (0.00 sec)

mysql> use server1 ;
Database changed
mysql> select * from login INNER JOIN server2.login sv2 ON login.id = sv2.id INNER JOIN server3.login sv3 ON login.id = sv3.id;
+------+-------+------+-------+------+-------+
| id   | login | id   | login | id   | login |
+------+-------+------+-------+------+-------+
|    1 | 123   |    1 | 456   |    1 | 789   |
+------+-------+------+-------+------+-------+
1 row in set (0.00 sec)

mysql>

 

Depois você pode utilizar um alias para distinguir os campos de cada servidor .. espero que ajude.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.