![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| | Nach oben #1 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Guten Abend Entwicklergemeinde, nachdem ich heute und gestern längere Zeit im Internet gesucht habe, muss ich leider enttäuscht feststellen, dass zu meinem Thema keine - für mich - brauchbaren Informationen gefunden werden konnten. Da ich das Problem am besten anhand eines Code-Beispieles darstellen kann, versuche ich das mal folgendermaßen: Code: SELECT ID, Name FROM table1 WHERE Funktion(Input wird aus Spalte der aktuellen Zeile geholt) = $string In der Tabelle steht zum Beispiel ID, Name, String 0, Otto, Achsachmawaddamahaadrann 1, Anton, Anton Dann lautet der SQL Befehl Code: SELECT ID, Name FROM table1 WHERE Funktion(Achsachmawaddamahaardrann) = $string; Code: SELECT ID, Name FROM table1 WHERE Funktion(Anton) = $string; Das Ganze habe ich natürlich in PHP bereits am Laufen, allerdings finde ich den Umstand ärgerlich, dass ich zu aller erst einmal alle Datenzeilen der Spalte "String" in ein PHP Array übergebe, durch eine Funkion jage und dann via preg_match z.B. Vergleiche, ob in $string der (bearbeitete) Inhalt aus der Datenspalte gefunden wurde und dann die dazugehörige ID und Name in ein anderes Array speichere. Warum soll ich alle Tabelleninhalte von MySQL nach PHP transportieren, wenn mich nur zwei Datenzeilen interessieren? Die Problematik an sich ist ja eigentlich nur, dass ich nicht nicht nachschauen will, ob der Inhalt der Spalte "String" = $string ist, sondern ob das Ergebnis der Funkion "Funkion(Spalte "String" der AKTUELLEN Zeile)" auf $string passt. Ich vermute, dass eine Methode, die so arbeitet, wie ich mir das gerade denke, performanter wäre, als die PHP-Variante. Für Denkanstöße (und vor allem Referenzen oder Beispiele) wäre ich sehr, sehr dankbar! Gruß Geändert von Sekundentakt (12.01.2009 um 20:49 Uhr) |
| | |
| | Nach oben #2 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.365
|
Ich vermute das wird dir nicht gefallen, könnte aber die einzige Lösung sein... http://dev.mysql.com/doc/refman/6.0/en/adding-udf.html Jedenfalls wenn ich dich richtig verstanden habe. |
| | |
| | Nach oben #3 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Hi Pago, was du mir da rausgesucht hast, bedeutet für mich, wenn ich es richtig übersetzt habe, dass ich eigene C++/C-Funktionen schreiben muss, die quasi das tun, was ich will? Sprich: ein Select in der Select-Abfrage, der statt der gesamten Tabelle, den aktuellen Datensatz der Spalte XY einsetzt, gibt es nicht (deines Wissensstandes nach)? Interessant wäre es ja, so etwas zu gestalten, doch C++ ist mir derzeit noch fremd. Trotzdem danke! Gruß |
| | |
| | Nach oben #4 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.365
|
Die Frage dabei ist ja, was deine "FUNKTION" eigentlich macht. MySQL hat einige Funktionen eingebaut, wenn du die verwenden kannst, solltest du das tun. Wenn nicht bleibt dir nur die Möglichkeit, über C/C++ eine Erweiterung zu schreiben, oder die Rechnung nach PHP zu verlagern. Hängt aber wie gesagt davon ab, was die Funktion machen soll. Wenn du uns das sagen könntest, könnten wir dir vielleicht sagen, ob und wie du das mit MySQL-Mitteln umsetzen kannst. |
| | |
| | Nach oben #5 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Ich möchte z.B. das MySQLs Funktion für reguläre Ausdrücke einen Ausdruck aus der aktuellen Datenzeile in der Spalte "String" ausliest, und mit $string vergleicht. Wenn der Ausdruck der aktuellen Datenzeile auf $string passt, dann soll diese Zeile zurückgeliefert werden.
|
| | |
| | Nach oben #6 |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.365
| http://www.regular-expressions.info/mysql.html Da ist'n Beispiel, wie das gehen würde. |
| | |
| | Nach oben #7 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
| Hmm, ich habe mir das jetzt wirklich mehrmals durchgelesen, konnte aber nichts entsprechendes finden. Der RegExp ist in der Spalte "String" abgelegt. Dann soll MySQL folgendes matchen: Code: SELECT ... WHERE REGEXP('Spalte-Strings Inhalt') = $string
[/FONT] Code: SELECT ... WHERE REGEXP('/regexp/i') = $string
Geändert von Sekundentakt (13.01.2009 um 15:51 Uhr) |
| | |
| | Nach oben #9 | |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
| Zitat:
Meine MySQL Datenbank haut bei folgendem Befehl Code: SELECT * FROM `tabletest` WHERE "Test 1234 test" RLIKE `String` Schade, dann wird das wohl nichts. Trotzdem Danke für die Hilfe. | |
| | |
| | Nach oben #10 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Hier mal ein Gedanke: Code: SELECT * FROM `table1` WHERE '$suchstring' RLIKE (SELECT `String` FROM `table1`) Wenn ich beim RegExp keine "Befehlszeichen" wie für Regular Expressions üblich verwende, sondern nur das reine Wort verwende, dann funktioniert es. Also z.B. wird im $suchstring "Hans du hast das Auto geklaut" mit RLIKE (SELECT entspricht "\sAuto\s/i") gesucht, findet er nichts, lautet der Spalteninhalt allerdings nur "Auto" und nicht "\sAuto\s/i" findet er die entsprechenden Zeilen. Nun sind diese "Befehlszeichen" allerdings sehr wichtig - hat jemand ne Idee warum es nicht funktionieren könnte? Übrigens: Ersetze ich die \s durch z.B. [:space:], dann macht das keinen Unterschied! Ich habe bisher noch nicht gehört, das \s berücksichtigt bzw. nicht berücksichtigt werden, sollte aber letzters zutreffen: die Alternative hat auch keine Wirkung. Geändert von Sekundentakt (13.01.2009 um 18:57 Uhr) |
| | |
| | Nach oben #11 | |
| Projektleiter Registriert seit: 30.11.2005 Ort: Bottrop
Beiträge: 1.365
|
Auf der Seite, die ich verlinkt habe, steht folgender Absatz: Zitat:
| |
| | |
| | Nach oben #12 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Nein, dass funktioniert leider auch nicht. Das Problem lag aber auch nicht am RegExp, sondern daran, dass er an der Stelle von $suchstring eine Tabellenspalte erwartet, bei der letzten Variante von mir meckert er dann zusätzlich noch rum, wenn die SELECT-Abfrage mehr als ein Argument zurückliefert - somit hat sich das Thema, C++ außen vor gelassen, erledigt. Trotzdem danke! |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Dynamische mySQL Query | la-finest | PHP-Programmierung | 2 | 25.01.2007 16:36 |
| Auslesen zweier verschiedener Datensätze in einem Query (mySQL) | Chr!s | Datenbanken | 8 | 14.11.2006 19:57 |
| MySQL Fehlermeldung: Your query requires a full tablescan ... | Chr!s | Datenbanken | 12 | 31.07.2006 21:45 |
| MySQL Query wird nicht ausgeführt | Garnele | Datenbanken | 6 | 01.04.2006 03:17 |
| MySQL 5.1 kommt in die Beta-Phase | Ben | Nachrichten | 1 | 02.03.2006 14:31 |