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

dwie tabele w sql


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

#1 csMaster

    Wszechwiedzący

  • Power User

Reputacja: 14
Początkujący

  • Postów:554
  • Lokalizacja:localhost
Offline

Napisano 01.08.2020 19:08

Powiedzmy że mam takie zapytanie wewnątrz kodu:

formatex(qCommand, charsmax(qCommand), "SELECT * FROM `table_1` WHERE `c` = '1'; SELECT * FROM `table_2` WHERE `c` = '1'");
SQL_ThreadQuery(hTuple, "TableHandle_Read", qCommand, Data, 2);

SQL_ReadResult() odczytuje dane tylko z jednej tabeli. Jak przejść do następnej ?


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 117
Super Hero

  • Postów:2 069
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 01.08.2020 20:21

SQL_NextRow()?

CREATE TABLE `1` (`c` INT NOT NULL DEFAULT 8);
CREATE TABLE `2` (`c` INT NOT NULL DEFAULT 5);

INSERT INTO `1` VALUES(DEFAULT);
INSERT INTO `2` VALUES(DEFAULT);

SELECT `1`.`c`, `2`.`c` FROM `1`, `2`;

Poczytaj o 'JOIN'.


Użytkownik Wicked. edytował ten post 01.08.2020 20:22

  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:554
  • Lokalizacja:localhost
Offline

Napisano 02.08.2020 13:29

SQL_NextRow()?

CREATE TABLE `1` (`c` INT NOT NULL DEFAULT 8);
CREATE TABLE `2` (`c` INT NOT NULL DEFAULT 5);

INSERT INTO `1` VALUES(DEFAULT);
INSERT INTO `2` VALUES(DEFAULT);

SELECT `1`.`c`, `2`.`c` FROM `1`, `2`;

Poczytaj o 'JOIN'.

 

SQL_NextRow() zwraca mi taki błąd:

[MySQL] No result set in this query!

Tak samo zresztą jak SQL_NextResultSet(). Czy coś robię źle ?

 

Twoje zapytanie Wicked. nie robi tego samego co podane przeze mnie w pierwszym poście. Chcę odczytać z kilku tabel wszystkie dane przy których jedna kolumna ma konkretną wartość. A twoje zapytanie odczyta tylko tą jedną kolumnę. Po co mi to skoro wartość w tym przypadku kolumny 'c' już znam. Chyba że chodzi ci o coś innego. Poczytam o JOIN ale wydaje mi się że to trochę zbyt skomplikowane na taki plugin. Takie zapytanie i tak będzie strasznie długie bo odczytać chcę dane z około 30 tabel. Dobrze by było gdybyś podał mi takie przykładowe zapytanie robiące to samo co select w pierwszym poście.


  • +
  • -
  • 0

#4 Robiin

    Godlike

  • Support Team

Reputacja: 1 117
Super Hero

  • Postów:2 069
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 02.08.2020 17:43

Wejdź sobie na https://demo.phpmyad.../master-config/, wrzuć kolejno query, które podałem w pierwszym poście i zobaczysz jak to działa.

 

Jeśli chodzi o sql_nextrow, to poprawne użycie byłoby takie (w handlerze):

while(SQL_MoreResults(query))
{
    // Code

    SQL_NextRow(query);
}

W efekcie stworzysz pętlę iterującą przez wszystkie zwrócone kolumny.


  • +
  • -
  • 1

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#5 csMaster

    Wszechwiedzący

  • Autor tematu
  • Power User

Reputacja: 14
Początkujący

  • Postów:554
  • Lokalizacja:localhost
Offline

Napisano 02.08.2020 20:37

Dzięki za pomoc, wykorzystam to w przyszłości jeśli będę tego potrzebował. Aktualnie jednak przypomniałem sobie o możliwości użycia SQL_ConnectSQL_PrepareQuery oraz SQL_Execute zamiast SQL_ThreadQuery przez co wykonanie wszystkich zapytań nie trwa już po 20 sekund. Poza tym wykorzystałem takie zapytanie:

SELECT * FROM `table_1`, `table_2` WHERE `table_1`.`c` = '1' AND `table_2`.`c` = '1'

Oraz w SQL_ReadResult nie użyłem SQL_FieldNameToNum. Na potrzeby mojego pluginu to wystarczy.


Użytkownik csMaster edytował ten post 02.08.2020 20:39

  • +
  • -
  • 0




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

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