Hans: MySQL WHERE

Hallo,

arbeite mich gerate in die WHERE-Klausel ein.
Frage, sind komplexe WHERE-Bedingungen möglich? z.B.:
folgende Tabelle:

  
+---------------------------+  
|id | bez | wert_x | wert_y |  
+---------------------------+  
|1  | bla |   2    |    3   |  
|2  | blu |   5    |    4   |  
+---------------------------+  

nun habe ich zwei weitere variablen: @x, @y vom Typ INT und @wert vom Typ FLOAT. Jetzt nehmen wir z.B. eine etwas komplexe Formel(Pseudo-Code):

@wert = SQRT((@x - wert_x * @x - wert_y) + (@y - wert_y * @y - wert_y))

jetzt möchte ich jede Zeile der Tablle haben in denen der Wert <= 2 ist.

Ist sowas möglich? Wenn ja, wie?

  1. Hi,

    @wert = SQRT((@x - wert_x * @x - wert_y) + (@y - wert_y * @y - wert_y))

    jetzt möchte ich jede Zeile der Tablle haben in denen der Wert <= 2 ist.

    Ist sowas möglich? Wenn ja, wie?

    In welcher Programmiersprache hast du die Variablen? Du kannst in PHP oder Perl dir ein entsprechendes SQL-Statement generieren lassen, in dem der Wert der Variablen in den String eingefügr wird (Interpolation). Wenn deine Variablen dann $x und $y sind:

      
    $sql="SELECT id, wert_x, wert_y, SQRT(($x - wert_x * $x - wert_y) + ($y - wert_y * $y - wert_y)) AS wert  
    FROM tbl  
    WHERE wert <=2";  
    
    

    HTH

    Margin-Auto

    1. Hi,

      $sql="SELECT id, wert_x, wert_y, SQRT(($x - wert_x * $x - wert_y) + ($y - wert_y * $y - wert_y)) AS wert
      FROM tbl
      WHERE wert <=2";

        
      danke erst mal für die Hilfe.  
      Ich bekomme allerdings dabei ne Fehlermeldung:  
      ERROR 1054 (42S22): Unknown column 'wert' in 'where clause'  
        
      Hans
      
      1. echo $begrüßung;

        $sql="SELECT [...] AS wert
        WHERE wert <=2";
        ERROR 1054 (42S22): Unknown column 'wert' in 'where clause'

        Wenn die WHERE-Klausel die Datensätze auswählt, kennt es noch keine Dinge, die erst anschließend mit den gefundenen Datensätzen angestellt werden, wie z.B. Auswahl der Felder und Berechnungen für die Ergebnismenge. Du musst die WHERE-Klausel unabhängig von Dingen in der SELECT-Klausel notieren.

        echo "$verabschiedung $name";

        1. Hi,

          Wenn die WHERE-Klausel die Datensätze auswählt, kennt es noch keine Dinge, die erst anschließend mit den gefundenen Datensätzen angestellt werden, wie z.B. Auswahl der Felder und Berechnungen für die Ergebnismenge. Du musst die WHERE-Klausel unabhängig von Dingen in der SELECT-Klausel notieren.

          das versteh ich nicht. wie kann das denn funktionieren, where in select? nach deiner beschreibung hab ich das jetzt so verstanden:

            
          select x-y as wert where wert < 2 from gruppe_bahnhof;  
          
          

          das funktioniert so nicht, hab dich mit sicherheit auch nicht verstanden.

          1. Hallo,

            Wenn die WHERE-Klausel die Datensätze auswählt, kennt es noch keine Dinge, die erst anschließend mit den gefundenen Datensätzen angestellt werden, wie z.B. Auswahl der Felder und Berechnungen für die Ergebnismenge. Du musst die WHERE-Klausel unabhängig von Dingen in der SELECT-Klausel notieren.

            das versteh ich nicht. wie kann das denn funktionieren, where in select? nach deiner beschreibung hab ich das jetzt so verstanden:

            Du musst die Berechnung in der WHERE-Klausel ausführen unabhängig davon ob Du sie nochmals für die Ausgabe brauchst oder nicht:

            SELECT bla, blub, SQRT(...) as foo
              FROM tabelle
             WHERE SQRT(...) >= 2

            Grüße
              Klaus

  2. echo $begrüßung;

    Frage, sind komplexe WHERE-Bedingungen möglich? z.B.:
    Ist sowas möglich? Wenn ja, wie?

    Ja. Verwende dazu die von MySQL zur Verfügung gestellten Funktionen und Operatoren und füge die Formel in die WHERE-Klausel ein: WHERE SQRT(...) <= 2

    echo "$verabschiedung $name";