ulimativ: SQL Query OK???

hi!
ICh will alle Datensätze aus der Spalte haben die mit dem buchstaben beginnen.

Also dann in PHP z.B.
$buchtstabe=a;
mysql_query("select * from tabelle where titel like '^$buchstabe%'");

bringt das den gewünschten erfolg?
sorry bin heute zu faul zum testen z:-o

uli

  1. Hi Uli

    Also dann in PHP z.B.
    $buchtstabe=a;
    mysql_query("select * from tabelle where titel like '^$buchstabe%'");

    bringt das den gewünschten erfolg?

    Nein, das ist keine RegularExpression was like haben will. Falls
    du mit RegExpen arbeiten will kann MySQL das auch, aber das geht
    ganz anders. Wenn du willst das es geht, nimm einfach '$buchstabe%'.
    Wo kein _ oder % ist will MySql auch zwingend den Buchstaben an
    erster Stelle haben.

    Zudem solltest du dir echt das Select * abgewöhnen, das ist einfach
    nur grässlich.

    sorry bin heute zu faul zum testen z:-o

    Ich hätte jetzt auch fies sein können und auch nur Nein posten können.
    Das wäre auch faul gewesen, hier wird von dir erwartet das du testest.

    Gruss Daniela

    1. sorry bin heute zu faul zum testen z:-o
      Ich hätte jetzt auch fies sein können und auch nur Nein posten können.
      Das wäre auch faul gewesen, hier wird von dir erwartet das du testest.

      ich weis, abe man darf auch mal einen faulen tag erwischen. bin heute echt ziemlich schlapp.

      was hat das eigentlich genau für einen grund select * zu vermeiden.
      Danke nochmal
      Uli

      1. Hi Uli

        was hat das eigentlich genau für einen grund select * zu vermeiden.

        Wenn dein Tabellenlayout nicht ändert (also keine Spalte hinzukommt)
        passiert nichts ausser das du deine Datenbankverbindung mit Felder
        die du nicht weiterverarbeitest unnötig belastest.

        Wenn jedoch dein Tabellenlayout ändert kann vieles passieren. Im
        besten Fall belastest du die Datenbankverbindung nur unnötig. Wenn
        du jedoch Pech hast in der Art wie du die Daten verarbeitest
        (zb über die anz Spalten drüber iterieren) dann kannst du Verschiebungen
        kriegen oder auch eine Spalte die du wolltest nicht mehr reinkriegen
        weil du die Reihenfolge nicht festgelegt hast, vielleicht kriegst
        du sogar Abstürze. Je nach Sprache kriegst du auch ohne spezielle
        Behandlung Abstürze. PL/1 arbeitet zb mit der into-clause in der
        Query, und da muss die Anzahl und die Typen genau übereinstimmen mit
        der Anzahl Spalten die von der Query zurückkommen.

        Gruss Daniela

      2. was hat das eigentlich genau für einen grund select * zu vermeiden.

        Generell ist nix dagegen zu sagen.
        Aber stell Dir mal vor, Du join-st zwei Tabellen a und b, in denen jeweils eine Spalte "test" vorkommt:

        select a.*, b.*
        from a, b
        where a.ref = b.ref;

        Die resultierende Kreuztabelle hätte dann die Spalte "test" 'doppelt' (d.h. die DB sucht sich eine aus und ignoriert die andere :), und Du wunderst Dich, wieso Zugriff auf "test" nicth so geht, wie Du erwartest.