MySQL Doppelquery

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Mittag,
    Ich habe ein Bizsystem angelegt.
    Nun habe ich dazu auch ein dynamisches Produktesystem gebastelt^^
    Nur Ich benötige einen Query, der aus einer Tabelle etwas ausließt und dies dann vergleicht.
    Zum einen habe ich die Tabelle "produkt"
    Dort werden Produkte und Biz's zusammen geführt.
    Mit den Spalten "ProduktID","BizID","Preis".
    Die weitere Tabelle ist "produkte"
    dort gibt es die Spalten:
    "ID","Name"
    Nun möchte ich dies in einem Dialog anzeigen lassen, etwa so:
    "Name Preis"


    somit hab ich diesen Query entwickelt

    SQL
    produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt,produkte WHERE produkt.BizID = %d AND produkte.ID = produkt.ProduktID


    Nur leider funktioniert dies nicht :(


    mfg

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

  • SQL
    *Was auch immer vorher noch kommt...* Tprodukt.Preis,Tprodukt.ProduktID,Tprodukte.Name FROM produkt as Tprodukt,produkte as Tprodukte WHERE Tprodukt.BizID = %d AND Tprodukte.ID = Tprodukt.ProduktID


    mit "as" gibst du den tabellen namen

  • Die Tabellennamen sind sehr verwirrent.


    Zitat

    Nur leider funktioniert dies nicht :(


    Was heisst das konkret ? Wird ein Fehler in der SQL Syntax angezeigt oder bekommst du einfach keine Ergebnisse ?
    Sehe in der SQL Syntax nämlich keinen Fehler.

  • @Dorf Leider hilft das nicht, ich denke eher, dass es and den WHERE's liegt.


    Gold
    Also MySQL-Debug sagt, dass es richtig ist, jedoch gibt es nichts wieder, wie ich schon sagte denke ich es liegt an den WHERE'S

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

  • Dann mach mal ein Screenshots von den Tabellen ( mit Daten ! ) oder einen MySQL Dump.
    Am besten du gibst auch mal den Query per print() aus und führst in selber direkt an der Datenbank via phpmyadmin o.Ä. aus . Kann ja auch sein,dass der String zu klein ist oder bei format() etwas nicht so läuft wie du es willst.

  • MYSQL Log:
    [13:45:45] CMySQLHandler::Query(SELECT produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt,produkte WHERE produkt.BizID = 3 AND produkte.Name = produkt.ProduktID) - Successfully executed.


    Screenshot 1:


    Screenshot 2:



    SAMP-Code:
    format(query,512,"SELECT produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt as produkt,produkte as produkte WHERE produkt.BizID = %d AND produkte.ID = produkt.ProduktID",biz);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(str))
    {
    sscanf(str,"p<|>iis",preis,pid,name);
    new id[10];
    format(id,sizeof(id),"%d",pid);
    format(string,sizeof(string),"%s\n%s %d$/Einheit",string,name,preis);
    }


    mfg

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

  • Warum hast den Query nicht mal an der Datenbank ausgeführt ?

    SQL
    SELECT produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt,produkte WHERE produkt.BizID = 3 AND produkte.Name = produkt.ProduktID


    Den Fehler sieht man schnell.
    Es gibt bei dir kein Biz mit der ID 3. Ich sehe nur die BizID 1 auf diesem Foto.
    Wie kommst du denn überhaupt auf die Zahl 3 für die BizID ? Vielleicht verwechselst du die BizID ja mit etwas anderem.

  • Wenn eins ändertsollte man anderes auch ändern! :D
    Vielen Dank :D


    //edit wie ich an die 3 ran komme? Gibt mir mein Bizsystem zurück? :D
    //edit² ehm Jetzt hab ich noch ein Problem, da man in einer MySQL Schleife kein Query ausführen kann.
    So ich möchte praktisch etwas aus der Tabelle "produkte" auslesen und das in "produkt" eintragen, da es mehr als ein Eintrag sein wird und ist, funktioniert dies mit einer klassichen Schleife wie diese hier nicht.
    format(query,512,"SELECT Preis,ProduktID FROM produkte WHERE Typ = 2");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(str))
    {
    sscanf(str,"p<|>ii",preis,pid);
    format(query,sizeof(query),"INSERT INTO produkt (ProduktID,BizID,Preis) VALUES (%d,%d,%d)",pid,lastid,preis);
    mysql_query(query);
    }

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

    Einmal editiert, zuletzt von RunAway ()

  • Wie wärs mal mit mysql_free_result() ?


    Ändert nichts am Problem, da man innerhalb einer Schleife keinen Query verwenden kann, da sonst die Schleife abgebrochen wird, bzw in der Schleife falsche Daten stehen


    mfg

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

  • Du musst bei SELECT auch ALLES aufführen wo du in WHERE benutzt



    heißt:


    SQL
    SELECT produkte.ID,produkt.BizID,produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt as produkt,produkte as produkte WHERE produkt.BizID = %d AND produkte.ID = produkt.ProduktID


    SELECT produkte.ID,produkt.BizID,produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt as produkt,produkte as produkte WHERE produkt.BizID = %d AND produkte.ID = produkt.ProduktID
    Der dick gedruckte Teil

  • Das Stimmt ja mal absolut nicht.
    Alle Felder die du im Query benutzen möchtest,müssen aus den Tabellen kommen,die du mit FROM angibst.
    Mit SELECT wählst du nur aus,welche Felder im Ergebnis am Ende landen sollen.


    Du kannst auch in einem SQL Befehl mehrere INSERTS durchführen. Formatier doch einen rießen String ( INSERT ) und sende es am Ende ab. Schau mal hier http://dev.mysql.com/doc/refman/5.5/en/insert.html.
    Du kannst aber auch einfach mehrere INSERT's Kommandos absenden mit einem mysql_query().

  • Vielen Dank, nur leider hab ich das nicht ganz verstanden, könntest du vllt ein Query mit einem Colum als Beispiel machen?


    mfg


    //edit


    Wieso sollte ich BizID aus einer Tabelle auslesen, wenn ich nur etwas aus einer Tabelle auslesen will, was ich mit BizID heraussuche, Solche Möchtegern-Pro-Scripter sollte man echt mal entsorgen...

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

    Einmal editiert, zuletzt von RunAway ()

  • Ich hätte den Link nicht gepostet,wenn dort keine Beispiele bei wären:


    Zitat

    INSERT statements that use VALUES syntax can insert multiple rows. To do this, include multiple lists of column values, each enclosed within parentheses and separated by commas. Example:

    SQL
    INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);


    tbl_name = Tabellenname
    a , b und c = Bezeichnung der Felder,für die die Werte eingetragen werden


    SQL
    INSERT INTO user ( name ) VALUES('Mustermann'),('Musterfrau');
  • Ich hätte den Link nicht gepostet,wenn dort keine Beispiele bei wären:



    tbl_name = Tabellenname
    a , b und c = Bezeichnung der Felder,für die die Werte eingetragen werden


    SQL
    INSERT INTO user ( name ) VALUES('Mustermann'),('Musterfrau');


    Oh, das weiß ich doch,
    nur hab damit ein Problem, ich muss praktisch aus einer Tabelle mehrere Einträge auslesen und diese dann in eine andere schreiben, sprich ich kann nicht innerhalb der Schleife den query ausführen, sonst würde der Schleifen-Query überschrieben, code siehe oben.


    //edit korregturen vorgenommen
    //push --> ich kann dadurch nicht weiter arbeiten, da einige systeme darauf aufbauen
    //edit der gedachte code ist so:

    new query[512],preis,str[512],string[1028],pid;
    format(query,512,"SELECT Preis,ProduktID FROM produkte WHERE Typ = 2");
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(str))
    {
    sscanf(str,"p<|>ii",preis,pid);
    format(query,sizeof(query),"INSERT INTO produkt (ProduktID,BizID,Preis) VALUES (%d,%d,%d)",pid,lastid,preis);
    mysql_query(query);
    }

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

    3 Mal editiert, zuletzt von RunAway ()

  • Also wenn ich das so richtig verstanden habe was in dem Link drinne stand von Goldkiller müsste es so sein

    INSERT INTO tbl_temp2 (fld_id)
    SELECT tbl_temp1.fld_order_id
    FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;


    http://dev.mysql.com/doc/refman/5.0/en/insert-select.html


    um das zu erklären hier werden daten in die tabelle tbl_temp2 bei fld_id eingefügt welche von tbl_temp1 genommen wird also die id wo sich dann unter fld_order_id befindet
    wo halt dann die id größer als 100 ist


    INSERT INTO Tabelle2 (id)
    SELECT Tabelle1.id
    FROM Tabelle1 WHERE Tabelle1.id > 100;

  • Ah, danke das sieht doch schon mal nützlich aus, ich schau mal obs funktioniert :)
    //edit vielen dank, hat funktioniert.

    Falsche Freunde: Fragen nach Kippen !
    Wahre Freunde: Sind der Grund, warum du keine Kippen hast !
    Falsche Freunde: Nennen deine Eltern Frau/Herr !
    Wahre Freunde: Nennen deine Eltern Mom/Dad !
    Falsche Freunde: Holen dich aus dem Knast und sagen dir, was getan hast, war falsch !
    Wahre Freunde: Sitzen in der Zelle neben dir und sagen: Scheiße...wir haben‘s verkackt...war aber verdammt lustig ! :P
    Falsche Freunde: Haben dich noch nie weinen sehen !
    Wahre Freunde: Weinen mit dir !
    Falsche Freunde: Werden dich stehen lassen, wenn die Menge das tut !
    Wahre Freunde: Werden der kompletten Menge den Arsch treten, die dich stehen gelassen hat ! c:
    Falsche Freunde: Bleiben für ne Weile !
    Wahre Freunde: Bleiben ein Leben lang !
    Falsche Freunde: Werden die Person, die Scheiße über dich erzählt, blöd vollabern !
    Wahre Freunde: Werden sie einfach ausknocken !
    Falsche Freunde: Werden das hier ignorieren !
    Wahre Freunde: Es Kopieren !

    Einmal editiert, zuletzt von RunAway ()