MySQL select Abfrage multiple

  • Moin,

    ich möchte von einer Zeile die "id" abfragen, von zwei Spalten (Nummer und Ordner)

    Mit der "Nummer" allein funktioniert es.

    Wie kann ich den Ordner in die Select Abfrage mit einbinden?

    Local $sQuerySelect = "SELECT * FROM webtable WHERE Nummer = '123456'"
    _MySQL_Real_Query($MysqlConn, $sQuerySelect)
    Local $res = _MySQL_Store_Result($MysqlConn)
    Local $array = _MySQL_Fetch_Result_StringArray($res)
    _MySQL_Free_Result($res)
    _ArrayDisplay($array,"$array")

    Könnt ihr mir helfen?

  • Hi wuff100 👋 ,

    einfacher wäre es, wenn du uns dein Tabellen-Schema (CREATE TABLE Statement) mal zeigst, dann wissen wir wie deine Tabelle aufgebaut ist und können besser antworten. Ich habe dich so verstanden, dass deine Tabelle mindestens die folgenden Spalten hat: ID, Nummer, Ordner.

    Somit sieht dein SELECT Statement um nur die ID abzufragen so aus:

    SQL
    SELECT	ID
    FROM   	webtable
    WHERE	Nummer = '123456'

    Wenn du nun bspw. die ID und den Ordner haben möchtest sieht das Statement so aus:

    SQL
    SELECT	ID, Ordner
    FROM   	webtable
    WHERE	Nummer = '123456'

    Und wenn du nur die ID, in Abhängigkeit der Nummer und des Ordners haben möchtest, dann ist das Statement folgendes:

    SQL
    SELECT	ID
    FROM   	webtable
    WHERE	Nummer = '123456'
    	AND	Ordner = 'MeinOrdnerName'

    Ich hoffe dies hilft. Das nächste Mal bitte mit dem Tabellen-Schema, dies schließt Missverständnisse (fast) aus 🤝 .

    Viele Grüße
    Sven

  • SOLVE-SMART , vielen Dank!

    Die Abfrage ($sQuerySelect) ergibt bei mir durch das "and" = True

    Local $sQuerySelect = "SELECT id FROM webtable WHERE Nummer =" & '123456' And "Ordner=" & 'Hallo'
    ConsoleWrite($sQuerySelect)

    Denke habe ein Syntax Problem.

  • Denke habe ein Syntax Problem.

    Genau.
    Das And ist bei dir nicht Teil der Zeichenkette sondern steht außerhalb (je nach Editor siehst du das auch gleich am Syntax-Highlighting - wie hier auch im Forum).
    Daher wirkt es als klassischer AutoIt-And-Operator und verknüpft logisch 2 Strings.
    Da es beides keine Leerstrings sind, ist das Ergebnis daher (da True And True = True) True.
    Den Fehler hast du gut eingegrenzt durch Debugging (in deinem Fall: Ausgabe der derzeitigen Variableninhalte).

    Jetzt geht es dir also um die Frage wie du den String korrekt aufarbeitest, damit die richtige Query bei MySQL ankommt.
    Dafür gibt es verschiedene Methoden:

    Ideal wäre eigentlich noch eine Funktion, welche die einzufügenden Strings escaped um SQL-Injections zu verhindern (oder alternativ prepared statements oder gleich procedures).
    Für SQLite gibt es soetwas in der mitgelieferten UDF.
    Ob deine verwendete MySQL-UDF soetwas auch hat müsstest du mal schauen.

    2 Mal editiert, zuletzt von AspirinJunkie (5. November 2024 um 06:44)

  • AspirinJunkie Vielen Dank!

    Keine Version funktioniert.

    Ich verwende die UDF MySQL.au3 ohne Driver.

    Wie gesagt. Nur die Nummer oder der Ordner (Select) allein, werden einwandfrei mit "_MySQL_Real_Query($MysqlConn, $sQuerySelect)" gefunden.

    Vielleicht kann es MySQL_Real_Query nicht umsetzen.

  • Keine Version funktioniert.

    Ich habe dir gezeigt wie man Strings mit Variableninhalten anreichert - nicht mehr.
    Und diese Varianten funktionieren alle.

    Für dein MySQL-Problem fehlen, wie von SOLVE-SMART bereits geschrieben, relevante Informationen.
    Wir wissen ja noch nicht mal was mit "nicht funktioniert" überhaupt gemeint ist. Kommt nichts zurück? Kommt ein Fehler? Kommt das falsche Ergebnis?
    Was ist überhaupt das Ziel?
    Was möchtest du genau abfragen?
    Woraus möchtest du es abfragen?
    Wie ist die Quelle struktuiert und aufgebaut?
    Klappt prinzipiell die Anbindung an die Datenbank oder scheitert es schon an der Verbindung?

    etc. etc. etc....

  • Was ist überhaupt das Ziel?

    Es kommen in der Datenbank die gleichen Ordner mit verschiedenen Nummern vor. Deshalb zwei Spalten abfragen.

    Ich könnte es natürlich auch mit dem ausgegebenen Array lösen, wenn ich nur nach der Nummer suchen würde. Dachte nur das es eleganter funktioniert.

    Was möchtest du genau abfragen?

    Ich möchte dann die zugehörige id abfragen.

    Woraus möchtest du es abfragen?

    Eine Hosting MySQL Datenbank.

    Wir wissen ja noch nicht mal was mit "nicht funktioniert" überhaupt gemeint ist. Kommt nichts zurück? Kommt ein Fehler? Kommt das falsche Ergebnis?

    Es kommt keine Fehlermeldung und nichts zurück.

    Klappt prinzipiell die Anbindung an die Datenbank oder scheitert es schon an der Verbindung?

    KLappt alles sehr gut! Insert, Update, Select mit einer Spaltenabfrage

  • So funktioniert es!

    "SELECT * FROM webtable WHERE nummer ='123456' and Ordner='Hallo'"

    Und so mit Variablen!

    $sQuerySelect = "SELECT * FROM webtable WHERE nummer=" & "'" & $sNummer & "'" & " and Ordner=" & "'" & $sOrdner & "'"

    Einmal editiert, zuletzt von wuff100 (5. November 2024 um 12:43)

  • Das müsste dann auch so gehen (mach es dir nicht zu kompliziert mit den ' ) :

    AutoIt
    $sQuerySelect = "SELECT * FROM webtable WHERE nummer='" & $sNummer & "' and Ordner='" & $sOrdner & "'"