Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

MySQL numer wiersza


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
7 odpowiedzi w tym temacie

#1 SeeK

    Wszechobecny

  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 03.08.2013 16:13

Mam tabelę z rekordami, którą chcę w zapytaniu posegregować względem kolumny "abc" i wyciągnąć na którym miejscu znajduje się gracz o nicku "xyz". Dodatkowo chciałbym, żeby w liczeniu wierszy były brane pod uwagę tylko te rekordy które w kolumnie "def" mają warość "zyx". Jest to możliwe do zrobienia za pomocą MySQLa? Znalazłem taką stronkę: http://nospor.pl/mysql-faq.html#faq-8 ale nie potrafię chyba dobrze wyciągnąć z niej kodu. Napisałem coś takiego na razie:

 

SELECT * FROM %s WHERE `def` = 'zyx' ORDER BY abc DESC podsel WHERE `name` = '%s'

 

Jak poprawić to zapytanie? A gdy będzie już poprawione, to jak wyciągnąć pozycję danego rekordu?


  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#2 MarWit

    The Chosen One

  • Przyjaciel

Reputacja: 843
Czempion

  • Postów:1 485
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Bystrzyca
Offline

Napisano 03.08.2013 16:55

SET @numRow = 0;
SELECT @numRow := @numRow + 1 AS numRow, `name`, `def`, `abc` FROM `%s` WHERE `name` = 'xyz' AND `def` = 'zyx' ORDER BY `abc` DESC;
?

Użytkownik MarWit edytował ten post 03.08.2013 16:56

  • +
  • -
  • 0

marwit-0.png


#3 SeeK

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 03.08.2013 23:54

Czyli kod w PAWNie będzie wyglądał tak jak poniżej?

format(szTemp,charsmax(szTemp),"SET @numRow = 0; SELECT @numRow := @numRow + 1 AS numRow, `name`, `def`, `abc` FROM `%s` WHERE `name` = 'xyz' AND `def` = 'zyx' ORDER BY `abc` DESC;",TABELA)
if(SqlTuple) 
SQL_ThreadQuery(SqlTuple, "stworzStat", szTemp, Data, 1)

Jak w funkcji stworzStat dobrać się do numRow? Tak jak poniżej?

numRow = SQL_ReadResult(Query, SQL_FieldNameToNum(Query,"numRow"))

Użytkownik SeeK edytował ten post 03.08.2013 23:56

  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#4 SeeK

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 09.08.2013 19:55

Nie jest mi nikt w stanie pomóc?


  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#5 speedkill

    Godlike

  • Przyjaciel

Reputacja: 1 592
Godlike

  • Postów:2 733
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Prudnik
Offline

Napisano 10.08.2013 09:22

Szczerze mówiąc, nie wiem czy to zadziała.

new g_Query[512],
	g_UserIndex[1];
		
g_UserIndex[0] = id;

formatex(g_Query, charsmax(g_Query), "SELECT COUNT(*) FROM `%s` WHERE `name` = `%s` AND `def` = 'zyx' ORDER BY `abc` DESC", TABELA, g_PlayerName[id]);
SQL_ThreadQuery(g_SqlTuple, "ShowResults", g_Query, g_UserIndex, sizeof(g_UserIndex));

public ShowResults(g_FailState, Handle:g_Query, g_Error[], g_ErrorCode, g_Data[], g_DataSize){
	if(g_FailState != TQUERY_SUCCESS){
		log_amx("<Query> Error: %s", g_Error);
		return;
	}
	new g_Amount = SQL_ReadResult(g_Query, 0),
		id = g_Data[0];
		
	if(!g_Amount){
		g_Amount = 1;
	}
	client_print(id, 3, "%d", g_Amount);
}

  • +
  • -
  • 0

If you can dream it, you can do it.


#6 SeeK

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 20.08.2013 01:17

Niestety, nie działa. Errory:

L 08/20/2013 - 02:14:31: [MySQL] Invalid column: -1
L 08/20/2013 - 02:14:31: [AMXX] Displaying debug trace (plugin "przegrane_godziny.amxx")
L 08/20/2013 - 02:14:31: [AMXX] Run time error 10: native error (native "SQL_ReadResult")
L 08/20/2013 - 02:14:31: [AMXX]    [0] przegrane_godziny.sma::stworzStat (line 119)

  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?

#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 981
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 21.08.2013 11:10

Pokaż kod który uzyles podczas testowania
  • +
  • -
  • 0

#8 SeeK

    Wszechobecny

  • Autor tematu
  • Użytkownik

Reputacja: 192
Profesjonalista

  • Postów:438
Offline

Napisano 28.08.2013 22:52

Ten który podał speedkill :)

 

Problem jest w tej funkcji: SQL_ReadResult(g_Query, 0) nie można pobrać argumentu 0-owego.


  • +
  • -
  • 0
https://sklep-sms.pl - Sklep SMS pozwala zarabiać na swoich serwerach gier opartych o silniki AMX Mod X oraz SOURCEMOD
https://nalunch.com - A Ty, gdzie pójdziesz dziś na lunch?




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych