Where Bedingung dynamisch ändern.

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Ennstaler
**
Beiträge: 39
Registriert: Mi, 12.04.2017 07:31

Where Bedingung dynamisch ändern.

Beitrag von Ennstaler »

Vorweg, ich weiß nicht, ob mein Anliegen überhaupt möglich ist.

Meine Datenbank zur Auswertung eines Bogenturniers mit verschiedenen Bogenklassen, Altersklassen und Mannschaften usw
ist dank Eurer großen Hilfe fertig.

Ich möchte die Datenbank noch gerne verfeinern und möchte dabei auch weiter dazu lernen.

Es existieren mehrere Abfrage, wo zB die Bogenklassen, Geschlecht und Altersklassen - sortiert nach Punkten und bei Punktegleichstand sortiert
nach erreichten Kills und einiges mehr. Da kommen viele Abfragen zusammen.

Hier ein konkretes Beispiel, was ich meine. Nehmen wir mal an, beim nächsten Turnier ändert sich die Altersgrenze bei den Kindern.
Code-Ausschnitt zur besseren Vorstellung was ich meine:

Code: Alles auswählen

SELECT ... 
FROM `turnier`...
WHERE `Alter` <= 10 
ORDER BY...
Derzeit gilt die Kinderklasse bis einschließlich 10 Jahre.
Ist es möglich, dass zum Beispiel <=10 dynamisch in der Abfrage geändert werden kann, indem man den Wert über ein Formular in eine Tabellenspalte speichert und diese dann einbindet?

Damit wäre man in der Handhabung flexibler und ich müsste nicht jede Abfrage anpassen, wenn sich etwas in den Abfragebedingungen ändert.

Ich habe schon viel gegoogelt, werde aber irgendwie nicht fündig, vielleicht suche ich auch mit den falschen Begriffen. Wäre um jeden Denkanstoß dankbar.

Beste Grüße,
Peter
nikki
******
Beiträge: 787
Registriert: Do, 05.03.2015 10:42

Re: Where Bedingung dynamisch ändern.

Beitrag von nikki »

Hallo Peter,
ganz ohne Formular:

Code: Alles auswählen

SELECT ... 
FROM `turnier`...
WHERE `Alter` <= :Alter
ORDER BY...
Im vorliegendem Fall bekommst Du eine Abfrage zur Eingabe des Alters.
Gruß

---------------------------------------------------------
Win.10 Prof. 64-bit, AOO 4.1.7, LO 6.3.4 (x64)
Ennstaler
**
Beiträge: 39
Registriert: Mi, 12.04.2017 07:31

Re: Where Bedingung dynamisch ändern.

Beitrag von Ennstaler »

Danke Niki;

Hab das auf die Schnelle probiert, bekomme aber einen "Syntaxfehler im SQL Ausdruck". Hab das schon mal gemacht mit einer Parameter Anfrage, muss mir das nochmals in Ruhe anschauen.

Grüße Peter
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Where Bedingung dynamisch ändern.

Beitrag von RobertG »

Hallo Peter,

Du arbeitest mit MySQL/MariaDB. Es kann sein, dass Du über
Bearbeiten → Datenbank → Erweitere Einstellungen
Benannte Parameter durch '?' ersetzen
auswählen kannst und damit das Problem löst.

Ansonsten wäre eine Filtertabelle anzuraten, in die die Altersklassevorgaben geschrieben werden. Dann hast Du so etwas wie

Code: Alles auswählen

SELECT ... 
FROM `turnier`...
WHERE `Alter` <= (SELECT `Alter` FROM `filter` WHERE `AK` = 1)
ORDER BY...
... wobei `AK` irgendetwas ist, das die richtige Zeile aus der Filtertabelle aussucht.

Gruß

Robert
Ennstaler
**
Beiträge: 39
Registriert: Mi, 12.04.2017 07:31

Re: Where Bedingung dynamisch ändern.

Beitrag von Ennstaler »

Klasse, hab das jetzt auf die Schnelle getestet und ich kann jetzt im Prinzip alle Abfragemodalitäten zentral steuern..

Habe zu Test- und Lernzwecken die Tabelle filter_altersklasse mit den Feldnamen Altersklassen und Reihe angelegt und 3 Zeilen befüllt - alle 3 Zeilen funktionieren so wie sie sollen.

Code für die 3. Reihe für die Abfrage der Kinderklasse:

Code: Alles auswählen

...
WHERE `Alter` <= (SELECT `Altersklassen` FROM `filter_altersklasse` WHERE `Reihe` = 3)
...
Das ist jetzt nur ein Beispielcode, der noch angepasst werden muss für Geschlecht, Jugend von 10-14 Jahre usw.. Aber vielleicht hilft dieses Beispiel von mir auch anderen.

Dankeschön und Grüße,
Peter
Antworten