SUBSTRING in mysql (where bedingung)
Hallo, ich möchte den Befehl SUBSTR in die Where-Bedingung einer Mysqo-Abfrage einbauen, bis jetzt erfolglos.
Nachdem ich jetzt den ganzen Abend versucht habe das hin zu bekommen und Google mir auch keine wirkliche Hilfe war, stelle ich die frage jetzt mal hier.
Ich brauche die SUBSTRING-Funktion in der where-bedingung der mysql-Ausgabe. Und das, obwohl zwei Tabellen mit Join verknüpft sind.
In der Tabelle1 steht in der Spalte user der Wert 'FFFFFFUserid' oder '000000Userid'
In der Tabelle2 steht in der Spalte Userid die Userid, in der Spalte Username eben der Name.
Dazu ist das meiste gesagt. Wenn ich anhand der Chat-Message den Usernamen anzeigen lassen will, dann will ich die beiden Tabellen mit Join verknüpfen - sonst brauche ich ja zwei Select-Abfrage.
PHP-Code:
$query = "SELECT $telegramm.user, $user.userid, $user.username,
FROM $telegramm,$user WHERE $user.userid = $telegramm.user";
Ich habe hier mal bewusst den Befehl SUBSTR weg gelassen, weil es Funktioniert solange die Userid in $telegramm.user eindeutig ist. Aber egal wie ich den SUBSTR-Befehl anwende, es funktioniert nicht. Dann gibt er keinen Wert mehr zurück.
PHP-Code:
$query = "SELECT $telegramm.user, $user.userid, $user.username,
FROM $telegramm,$user WHERE $user.userid = SUBSTR('$telegramm.user',4,4)";
Wie gesagt, alles was ich bisher versucht habe funktioniert nicht. Aber wie kriege ich das hin, wenn ich die beiden Tabellen verknüpfen will?
Gruß
Matthias
Nachdem ich jetzt den ganzen Abend versucht habe das hin zu bekommen und Google mir auch keine wirkliche Hilfe war, stelle ich die frage jetzt mal hier.
Ich brauche die SUBSTRING-Funktion in der where-bedingung der mysql-Ausgabe. Und das, obwohl zwei Tabellen mit Join verknüpft sind.
In der Tabelle1 steht in der Spalte user der Wert 'FFFFFFUserid' oder '000000Userid'
In der Tabelle2 steht in der Spalte Userid die Userid, in der Spalte Username eben der Name.
Dazu ist das meiste gesagt. Wenn ich anhand der Chat-Message den Usernamen anzeigen lassen will, dann will ich die beiden Tabellen mit Join verknüpfen - sonst brauche ich ja zwei Select-Abfrage.
PHP-Code:
$query = "SELECT $telegramm.user, $user.userid, $user.username,
FROM $telegramm,$user WHERE $user.userid = $telegramm.user";
Ich habe hier mal bewusst den Befehl SUBSTR weg gelassen, weil es Funktioniert solange die Userid in $telegramm.user eindeutig ist. Aber egal wie ich den SUBSTR-Befehl anwende, es funktioniert nicht. Dann gibt er keinen Wert mehr zurück.
PHP-Code:
$query = "SELECT $telegramm.user, $user.userid, $user.username,
FROM $telegramm,$user WHERE $user.userid = SUBSTR('$telegramm.user',4,4)";
Wie gesagt, alles was ich bisher versucht habe funktioniert nicht. Aber wie kriege ich das hin, wenn ich die beiden Tabellen verknüpfen will?
Gruß
Matthias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 168149
Url: https://administrator.de/forum/substring-in-mysql-where-bedingung-168149.html
Ausgedruckt am: 25.12.2024 um 06:12 Uhr
8 Kommentare
Neuester Kommentar
Moin Matthias-Niklasg,
ist ja nicht gerade mein Fachgebiet, aber...
--> ist es denn so schlau, hier: "...SUBSTR('$telegramm.user',4,4)" ... zu schreiben?
Ich als Laie hätte "... SUBSTR( $telegramm.user, 4, 4)"; geschrieben. Also ohne die einfachen Anführungszeichen.
....aber was verstehen Biber schon von Chatprogrammen...
Grüße
Biber
ist ja nicht gerade mein Fachgebiet, aber...
Zitat von @FeuerTeufel:
PHP-Code:
$query = "SELECT $telegramm.user, $user.userid, $user.username,
FROM $telegramm,$user WHERE $user.userid = SUBSTR('$telegramm.user',4,4)";
PHP-Code:
$query = "SELECT $telegramm.user, $user.userid, $user.username,
FROM $telegramm,$user WHERE $user.userid = SUBSTR('$telegramm.user',4,4)";
--> ist es denn so schlau, hier: "...SUBSTR('$telegramm.user',4,4)" ... zu schreiben?
Ich als Laie hätte "... SUBSTR( $telegramm.user, 4, 4)"; geschrieben. Also ohne die einfachen Anführungszeichen.
....aber was verstehen Biber schon von Chatprogrammen...
Grüße
Biber
Moin Moin
Versuch ich mal mein Glück.
Ich habe ehrlich gesagt nicht so richtig verstanden was du erwartest was dir Substring hier liefern soll.
Denn für 'FFFFFFUserid' liefert dein SUBSTR ja 'FFFU'. Das soll passen?
Aber ich denke, wenn du einfach mal folgendes Statement
auf deiner Datenbank ausführst, solltest du recht schnell (durch drüberschauen) feststellen,
ob Werte vorhanden sind die auch in $user.userid vorkommen.
Gruß L.
Versuch ich mal mein Glück.
Ich habe ehrlich gesagt nicht so richtig verstanden was du erwartest was dir Substring hier liefern soll.
Denn für 'FFFFFFUserid' liefert dein SUBSTR ja 'FFFU'. Das soll passen?
Aber ich denke, wenn du einfach mal folgendes Statement
Select $telegramm.user, SUBSTR($telegramm.user,4,4) From $telegramm
ob Werte vorhanden sind die auch in $user.userid vorkommen.
Gruß L.
Moin Niklasg,
auch wenn der Beitrag schon als "Gelöst" markiert ist.... ich verstehe ebensowenig wie Logan000 wieso das so ist
Im Eröffnungsbeitrag behauptest du
WTF kann dann ein "SELECT SUBSTR($telegramm.user, 4, 4) From $telegramm" zu einem "richtigen Ergebnis führen?
Das muss doch dann entweder
Oder es ist vielleicht auch
Gib uns doch nochmal des Rätsels Lösung:
Grüße
Biber
auch wenn der Beitrag schon als "Gelöst" markiert ist.... ich verstehe ebensowenig wie Logan000 wieso das so ist
Im Eröffnungsbeitrag behauptest du
In der Tabelle1 steht in der Spalte user der Wert 'FFFFFFUserid' oder '000000Userid'
In der Tabelle2 steht in der Spalte Userid die Userid,
und auch un deinem Kommentar vom 17.06. nach der Tagesschau sagst duIn der Tabelle2 steht in der Spalte Userid die Userid,
ja der Wert FFFFFFUserid würde in etwa so aussehen: FFFFFF264.
Daraus lese ich --> die matching Userid ist z.b. die "264" (mal dahingestellt, ob numerisch oder als Text.WTF kann dann ein "SELECT SUBSTR($telegramm.user, 4, 4) From $telegramm" zu einem "richtigen Ergebnis führen?
Das muss doch dann entweder
SELECT SUBSTR($telegramm.user, 7, 4) From $telegramm
sein, denn "SUBSTR($telegramm.user, 1, 6) From $telegramm" ist doch immer "FFFFFF" oder "000000".Oder es ist vielleicht auch
SELECT SUBSTR($telegramm.user, -4, 4) From $telegramm
...also die letzten 4 Stellen des Feldes $telegramm.user, FALLS dieses ein CHAR(12)-Feld ist und somit die userids maximal 4stellig.Gib uns doch nochmal des Rätsels Lösung:
- welche Datentypen haben $telegramm.user und $user.userid?
- wie sieht denn jetzt der matchende/übereinstimmende Teil des beiden Felder aus?
Grüße
Biber