kostenloser Webspace werbefrei: lima-city


MySQL split in Abfrage

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Hi
    Ich habe ein Problem.
    In einer Spalte (ids) speicher ich Zahlen durch ';' getrennt
    1;3;2;4


    Ich möchte nun eine Abfrage machen, undzwar ungefähr so:
    $abfrage = "SELECT * FROM tabelle WHERE is '3' in split(';', ids) ";
    $ergebnis = mysql_query($abfrage);
    ($row = mysql_fetch_object($ergebnis);
    [...]


    Wie muss ich das anstellen?
    Ich habe leider keine Ahnung wie ich das machen soll.
    MFG
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Normalerweise nimmt man je ein Feld für eine ID mit dem entsprechenden Zahlen-Typ (z.B. int). Das macht auch Sinn, denn so kann die Datenbank optimal mit den Zahlen arbeiten. Sie ist dann schneller, vor allem wenn sie gross ist.

    Beitrag zuletzt geändert: 18.3.2011 11:07:29 von misc
  4. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    nein.
    Das sind nicht die Ids der spalte.
    Es gibt ein feld mit id was die id des eintrags enthält.
    Und ein Feld mit der Beschriftung Ids was mehrere Zahlen durch ; getrennt enthält.
    Und ich muss nun meine Abfrage nach einem dieser Zahlen ausrichten.
  5. Wie wäre es mit regulären Ausdrücken?
    http://dev.mysql.com/doc/refman/5.1/en/regexp.html

    das sollte der richtige Ausdruck sein:
    SELECT '2;4;53' REGEXP '[^0-9]3[^0-9]|[^0-9]3$|^3[^0-9]';


    Wenn nicht mit einer Referenztabelle arbeiten.

    Beitrag zuletzt geändert: 18.3.2011 11:23:10 von sneppa
  6. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    danke, ich hoffte das es sowas gibt :)
    Nur irgendwie verstehe ich das nicht ganz. Was muss ich jetzt nehmen um wine von den Zahlen zu bekommen ?!
    Vielen Dank & MFG
  7. programtools schrieb:
    danke, ich hoffte das es sowas gibt :)
    Nur irgendwie verstehe ich das nicht ganz. Was muss ich jetzt nehmen um wine von den Zahlen zu bekommen ?!
    Vielen Dank & MFG

    eben editiert:
    sneppa schrieb:
    das sollte der richtige Ausdruck sein:
    SELECT '2;4;53' REGEXP '[^0-9]3[^0-9]|[^0-9]3$|^3[^0-9]';



    Einfacher wäre wohl:
    SELECT '2;4;53' REGEXP ';3;|;3$|^3;';


    Beitrag zuletzt geändert: 18.3.2011 11:25:16 von sneppa
  8. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Vielen Dank, aber
    was bedeutet jetzt genua was?

    Angenommen der gespeicherte String in 'ids' ist '1;3;5;9'
    ich möchte alle Spalten auswählen, in denen $variavle in 'ids' vorkommt.


  9. Na was das bedeutet kannst du ja in der Doku nachlesen:
    http://dev.mysql.com/doc/refman/5.1/en/regexp.html

    SELECT '2;4;53' REGEXP ';3;|;3$|^3;';

    Dabei kommt 0 oder 1 heraus; 1 gefunden - 0 nicht.

    SELECT feld1, feld2, feld3, ids REGEXP ';3;|;3$|^3;' AS found
    FROM tabelle
    WHERE found = 1

    (Ohne es zu testen)

    Beitrag zuletzt geändert: 18.3.2011 11:59:25 von sneppa
  10. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    DAnke, aber ich meine ich suche ja nach einer Zahl die in $variable steht.
    Wo muss ich jetzt das $variable einsetzen? Php muss doch wissen was es suchen soll.
  11. programtools schrieb:
    Ich möchte nun eine Abfrage machen, undzwar ungefähr so:
    $abfrage = "SELECT * FROM tabelle WHERE is '3' in split(';', ids) ";
    $ergebnis = mysql_query($abfrage);
    ($row = mysql_fetch_object($ergebnis);
    [...]

    Du hast doch im Beispiel die 3 genannt?
    sneppa schrieb:
    SELECT feld1, feld2, feld3, ids REGEXP ';3;|;3$|^3;' AS found
    FROM tabelle
    WHERE found = 1

    (Ohne es zu testen)

    Dann würde ich glatt die 3 durch die Variable ersetzen ;)
  12. Autor dieses Themas

    programtools

    programtools hat kostenlosen Webspace.

    Oh ja...
    tut mir leid :)
    Das hatte ich schon wieder ganz vergessen :D
    Vielen Dank für deine Mühe und die gute Hilfe :)
    Grüße

    Leider klappt es nicht so ganz.
    Ich bekomme folgenden Fehler:
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource


    Mein Code sieht so aus:
    $abfrage_sm = "
                SELECT menu_id, superior_menu REGEXP ';".$menu_id.";|;".$menu_id."$|^".$menu_id.";' AS found
                FROM minis_menus
                WHERE found = 1";
                $ergebnis_sm = mysql_query($abfrage_sm);
                while($row_sm = mysql_fetch_object($ergebnis_sm)){
                    $submenus = $submenus.$row_sm->menu_id.";";
                }
    
                echo "-submenus->".$submenus;



    in superior_menu steht der string zb. 1;3;4
    in $menu_id ist die gesuchte Zahl zb. 3

    Was mache ich da falsch?

    Beitrag zuletzt geändert: 18.3.2011 12:30:12 von programtools
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!