Beiträge von RunAway

    Der sinn dahinter ist schwachsinn, da du den string nochmal in nen string formatierst und dann nochmal in nen string.....
    Nur erließt erst garnichts aus der Datenbank.


    //edit Fehler gefunden!!


    //closed

    Was RedJoker schreibt ist ja auch totaler Blödsinn. Dein Query ist schon richtig so.


    SQL
    SELECT haus.EnterX,haus.EnterY,haus.EnterZ,haus.ID,haus.SpielerID,haus.Preis,haus.Mietpreis,accounts.Name FROM haus, accounts WHERE accounts.ID = haus.ID


    Dir werden jetzt auch nur Ergebnisse angezeigt,wo die haus.ID mit der accounts.ID in Beziehung gesetzt werden kann. Ob das bei allen Einträgen der Fall ist,weiss ich nicht.
    Muss ich selber zugeben,hab ich erst auch nicht beachtet.


    Du könntest entweder eine Dummy-ID bzw User anlegen,die bedeutet,dass das Haus keinen Besitzer hat ( dann kann man es weiterhin mit nur 1 Query lösen ) oder du splittest das Erstellen der Häuser. Im ersten Fall werden die Häuser erstellt die einen Besitzer haben .Im zweiten Fall die Häuser die noch keinen Besitzer haben.


    kann ich nicht iwie noch eine Where Bedingung einbringen, die nur für die tabelle haus gilt und dort haus.ID = * gilt ( funktioniert grade geteset :D)


    //edit
    Ich habs jetzt getrennt, jedoch werden die häuser mit Besitzern nicht angezeigt :(
    format(query,256,"SELECT haus.EnterX,haus.EnterY,haus.EnterZ,haus.ID,haus.SpielerID,haus.Preis,haus.Mietpreis,accounts.Name FROM haus, accounts WHERE accounts.ID = haus.SpielerID");
    mysql_store_result();
    mysql_store_result();
    while(mysql_fetch_row_format(str))
    {
    mysql_fetch_field_row(dest[0],"haus.EnterX");//16
    mysql_fetch_field_row(dest[1],"haus.EnterY");
    mysql_fetch_field_row(dest[2],"haus.EnterZ");
    mysql_fetch_field_row(dest[3],"haus.ID");
    mysql_fetch_field_row(dest[4],"haus.SpielerID");
    mysql_fetch_field_row(dest[5],"haus.Preis");
    mysql_fetch_field_row(dest[6],"haus.Mietpreis");
    mysql_fetch_field_row(dest[7],"accounts.Name");
    new string[256];
    format(string,256,"HausID: %s\nDieses Haus gehört: %s\n/mieten um dort zu wohnen!\nMietpreis/PayDay: %s",dest[3],dest[7],dest[6]);
    new Text3D:labelid = CreateDynamic3DTextLabel(string, COLOR_RED, floatstr(dest[0]),floatstr(dest[1]), floatstr(dest[2])+0.35, 5.0);
    new pickid = CreateDynamicPickup(1273, 1,floatstr(dest[0]),floatstr(dest[1]), floatstr(dest[2]));
    mysql_SetInt("haus", "PickupID", pickid, "ID", dest[3]);
    mysql_SetInt("haus", "LabelID", _:labelid, "ID", dest[3]);
    }


    Das tut hier aber grad nichts zur sache

    dann poste den debug



    //Edit Verwendung aus dem SQL Wiki verwendet:

    SQL
    Tabellen können auch ohne Verwendung von Schlüsselfeldern miteinander verknüpft werden:
    
    
    SELECT Vorlesung.Titel, Professor.Name
    FROM Professor, Vorlesung
    WHERE Professor.PersNr = Vorlesung.PersNr

    Die Nutzung der Funktionen, die das MySQL Plugin bietet fällt unter die Kategorie wie die Nutzung von DINI usw.
    Die Erstellung des Querys ( SQL Kommando ) ,welches an der MySQL Datenbank ausgeführt wird, ist etwas Anderes.

    SQL
    SELECT `EnterX`,`EnterY`,`EnterZ`,`ID`,`SpielerID` FROM `haus`
    SELECT `Name` FROM `accounts` WHERE `ID` = '%d'


    Diese Beiden SQL Kommandos zu kombinieren hat nichts mit PAWN / SA:MP zu tun,auch wenn du es hier nutzen kannst. Denn SQL ist eine eigenen Sprache.
    Ein einfaches Beispiel wäre hier zu finden.
    Mit einem WHERE ist es ein leichstes die Beiden zu verknüpfen.


    Also ich hab das so verstanden
    format(query,256,"SELECT haus.EnterX,haus.EnterY,haus.EnterZ,haus.ID,haus.SpielerID,haus.Preis,haus.Mietpreis,accounts.Name FROM haus, accounts WHERE accounts.ID = haus.ID");
    mysql_query(query);
    Er ließt es auch aus( richtiger Syntax), aber 0 rows.


    //edit Zitat hinzugefügt, Aber in der mysql_debug log wird halt alles richtig angezeigt nur das 0 einträge angeblich in der tabelle wären obwohl 6 drin sind.

    Mit einem besser gewähltem SQL Kommando.
    Da du in jedem ( Ausnahme wahrscheinlich GetPlayerMySQLName ) Befehl aus der Tabelle "haus" ließt,kannst du einfach einen Query nutzen und dort alle Daten auslesen.
    Da wir aber a) kein SQL - Hilfeforum sind und b) ich dir nicht die Lösung vorschreibe, überleg mal ein wenig selber ;).
    Was auch immer GetPlayerMySQLName, dass kann man sicherlich auch direkt mit dem Query verknüpfen über WHERE.
    Kannst ja einfach mal die Funktion GetPlayerMySQLName posten, Tatbestand b bleibt aber erhalten.


    Also Punkt a kann ich nicht verstehen, da MySQL eine Speicherart ist, die man mit Pawn nutzen kann. So müßte man hier auch Dini,SII und sonstiges verbieten....


    Ich habe grad mal gegoogelt, man kann es mit dem Syntax Join machen nur diesen verstehe ich nicht :(

    stock GetPlayerMySQLName(id)
    {
    new query[130], Get[130];
    format(query,sizeof(query), "SELECT `Name` FROM `accounts` WHERE `ID` = '%d'", id);
    mysql_query(query);
    mysql_store_result();
    mysql_fetch_row(Get);
    mysql_free_result();
    return Get;
    }