MySQL WHERE
Hans
- datenbank
0 Margin-Auto0 dedlfix
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?
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
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
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";
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.
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
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";