←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Łączenie 2 baz danych w 1

  • +
  • -
NEQU# - zdjęcie NEQU# 20.09.2016

Witam, potrzebuję połączyć 2 bazy danych mysql, tak aby dane z 1 dopisało do 2, jeżeli znajdą się 2 osoby o tym samym nicku, powinno nadpisać wartości mniejsze większymi(np. w bazie 1 gracz posiada "5" expa, w 2 gracz o tym samym nicku posiada 10 expa, przy próbie przeniesienia danych z 1 do 2 powinno zostawić gracza z wartością większą(10). Ktoś wie, w jaki sposób mogę to zrobić?


Użytkownik NEQU# edytował ten post 20.09.2016 09:28
Odpowiedz

  • +
  • -
tytusek - zdjęcie tytusek 20.09.2016

jakimś programem do zarządzania mysql, tak mi się wydaje 

 

proponuje poszukać na google albo czekać na kogoś kto już to robił i mu się udało

Odpowiedz

  • +
  • -
MaxioR - zdjęcie MaxioR 20.09.2016

w phpmyadmin eksportuj jedna baze do pliku, a następnie importuj ją do kolejnej bazy.

Polecam wykonać kompie obu baz dancyh.

 

PS Polecam sprawdzić tą strone http://www.sql-kursy...n-except-2.html

Odpowiedz

  • +
  • -
NEQU# - zdjęcie NEQU# 20.09.2016

w phpmyadmin eksportuj jedna baze do pliku, a następnie importuj ją do kolejnej bazy.

Polecam wykonać kompie obu baz dancyh.

 

PS Polecam sprawdzić tą strone http://www.sql-kursy...n-except-2.html

Zwykły import raczej nie przejdzie, ze względu na wymagania - przy 2 takich samych nickach, większe wartości mają nadpisać mniejsze.

Odpowiedz

  • +
  • -
Ogen Dogen - zdjęcie Ogen Dogen 24.09.2016

Sam MySQL raczej nie ma takich narzędzi.

Potrzebujesz napisać aplikację lub skrypt (chociażby w PHP), który pobierze dane z dwóch baz do tablic, przefiltruje je odpowiednio wg. twojego warunku, zapisze wynik do nowej tablicy a następnie na jej podstawie stworzy nową tabelę lub zaktualizuje jedną z nich.

Moja propozycja algorytmu na szybko :P Chyba że są jakieś gotowe narzędzia do takich zadań ?

Odpowiedz

  • +
  • -
NEQU# - zdjęcie NEQU# 24.09.2016

Ktoś podejmie się napisania takiego skryptu? 

Odpowiedz

  • +
  • -
Engi - zdjęcie Engi 25.09.2016

Podeślij strukturę baz.

Odpowiedz

  • +
  • -
NEQU# - zdjęcie NEQU# 26.09.2016

Podeślij strukturę baz.

public sql_start()
{
	if ( !get_pcvar_num(p_Enabled) || !get_pcvar_num(save_type) )
		return;
		
	if(g_boolsqlOK) return;
	
	new szHost[64], szUser[32], szPass[32], szDB[128];
	
	get_pcvar_string( mysqlx_host, szHost, charsmax( szHost ) );
	get_pcvar_string( mysqlx_user, szUser, charsmax( szUser ) );
	get_pcvar_string( mysqlx_pass, szPass, charsmax( szPass ) );
	get_pcvar_string( mysqlx_db, szDB, charsmax( szDB ) );
	
	g_SqlTuple = SQL_MakeDbTuple(szHost, szUser, szPass, szDB);
		
	new q_command[2048]
	
	new iLen=0, iMax=sizeof(q_command) - 1
	
	iLen += formatex(q_command[iLen], iMax-iLen,"CREATE TABLE IF NOT EXISTS zm_expp ( ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`nick` VARCHAR(48) NOT NULL, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`lvl` INT(3) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`exp` INT(9) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`quest_gracza` INT(3) DEFAULT -1, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`ile_juz` INT(9) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`ile_wykonano` INT(9) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`totalpoints` INT(9) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`ammopacks` INT(6) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`dam_done` INT(12) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`zm_kill` INT(6) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`hm_infkill` INT(6) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`deaths` INT(6) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`nem_kill` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`sur_kill` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`ass_kill` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`sni_kill` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`matki_kill` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`last_hm_kill` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`zm_win` INT(6) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`hm_win` INT(6) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`czas_online` INT(6) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`statystyka_1` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`statystyka_2` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`statystyka_3` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`statystyka_4` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`statystyka_5` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"`statystyka_6` INT(4) DEFAULT 0, ")
	iLen += formatex(q_command[iLen], iMax-iLen,"PRIMARY KEY (`nick`)) ")
	iLen += formatex(q_command[iLen], iMax-iLen,"DEFAULT CHARSET `utf8` COLLATE `utf8_general_ci`")
	
	SQL_ThreadQuery(g_SqlTuple, "QueryCreateTable", q_command);
}
public QueryCreateTable( FailState, Handle:hQuery, szError[ ], Errcode, iData[ ], iDataSize, Float:fQueueTime ) 
{
	if(FailState == TQUERY_CONNECT_FAILED) {
		log_to_file("sql.log", "Could not connect to SQL database.");
		return PLUGIN_CONTINUE;
	}
	if(Errcode) {
		log_to_file("sql.log", "Error on Table query: %s", szError);
		return PLUGIN_CONTINUE;
	}
	if(FailState == TQUERY_QUERY_FAILED) {
		log_to_file("sql.log", "Table Query failed.");
		return PLUGIN_CONTINUE;
	}
	g_boolsqlOK = 1;
	log_to_file("sql.log", "Prawidlowe polaczenie");
	
	set_task(30.0, "wczytaj_statystyki");
	
	return PLUGIN_CONTINUE;
}

Proszę

Odpowiedz

  • +
  • -
NEQU# - zdjęcie NEQU# 20.10.2016

Jest ktoś chętny do zrobienia tego? jeżeli będzie trzeba to zapłacę.

Odpowiedz

  • +
  • -
KrwioPijca - zdjęcie KrwioPijca 24.10.2016

Napisz GG

Odpowiedz

  • +
  • -
NEQU# - zdjęcie NEQU# 31.10.2016

KrwioPijca się postarał

 

/close

Odpowiedz