Dynamische Filteroptionen
Lassen Sie Filteroptionen automatisch aus Ihren Daten generieren mit SQL-Abfragen für dynamische, datengesteuerte Filterung.
Stellen Sie sich vor, Ihre Filteroptionen aktualisieren sich automatisch basierend auf Ihren tatsächlichen Daten - wie ein intelligenter Assistent, der immer die aktuellsten und relevantesten Auswahlmöglichkeiten bereitstellt, ohne dass Sie manuell Listen pflegen müssen.
Was sind dynamische Filteroptionen?
Dynamische Filteroptionen verwenden SQL-Abfragen, um Filter automatisch mit Werten aus Ihren Daten zu befüllen, anstatt diese manuell einzugeben:
Automatisch aktualisiert - Filteroptionen spiegeln immer Ihre aktuellen Daten wider
SQL-gesteuert - Schreiben Sie Abfragen, um verfügbare Werte zu ermitteln
Anpassung an andere Filter - Optionen können sich basierend auf anderen Filtern ändern
Datengetrieben - Keine manuellen Listen mehr pflegen
Intelligent gefiltert - Zeigen Sie nur relevante, verfügbare Optionen
Beispiel aus der Praxis: Anstatt manuell alle Abteilungsnamen einzugeben, schreibt Ihr Filter eine SQL-Abfrage wie SELECT DISTINCT abteilung FROM mitarbeiter WHERE aktiv = true LIMIT 10000
, um automatisch alle aktiven Abteilungen als Filteroptionen zu erhalten.
Dynamisch vs. manuell gesteuerte Filter
Filteroptionen werden automatisch aus Daten generiert:
Immer aktuell: Optionen spiegeln den aktuellen Datenbestand wider
Wartungsfrei: Keine manuellen Updates nötig wenn sich Daten ändern
Intelligent: Können sich basierend auf anderen Filterauswahlen ändern
Datengenau: Zeigen nur Werte, die tatsächlich in den Daten existieren
Performant: Abfragen können optimiert und gecacht werden
Beste Anwendung für:
Abteilungen, die sich häufig ändern
Status-Listen aus aktuellen Projekten
Zeiträume basierend auf verfügbaren Daten
Kategorien, die dynamisch sind
Abhängige Filteroptionen (Stadt → Postleitzahl)
Wie dynamische Filter funktionieren
Das Grundprinzip:
SQL-Abfrage schreiben → Die erste Spalte der Ergebnisse wird zu Ihren Filteroptionen
Automatische Aktualisierung → Filter führt die Abfrage aus und lädt die aktuellen Werte
Variable Integration → Andere Filter können als
$variablenname
in der Abfrage verwendet werdenIntelligente Anpassung → Filteroptionen ändern sich basierend auf anderen Filterauswahlen
Beispiel-Ablauf:
Benutzer wählt "Öffentliche Sicherheit" im Abteilungsfilter
Status-Filter führt SQL-Abfrage aus:
WHERE abteilung = 'Öffentliche Sicherheit'
Status-Optionen zeigen nur relevante Werte für diese Abteilung
Bei Abteilungsänderung aktualisieren sich die Status-Optionen automatisch
Dynamische Filter einrichten
Filter erstellen
Filter erstellen und "Auswahlliste" als Eingabeoption wählen
Im Bereich "Verfügbare Werte" finden Sie zwei Optionen:
"Eigene Liste" (manuelle Eingabe)
"Abfrage" (SQL-gesteuert)
"Abfrage" auswählen für dynamische Optionen
SQL-Abfrage schreiben und testen
"Bearbeiten" klicken um den SQL-Editor zu öffnen
SQL-Abfrage schreiben, die Optionen in der ersten Spalte zurückgibt:
-- Einfaches Beispiel: Alle aktiven Abteilungen
SELECT DISTINCT abteilungsname
FROM abteilungen
WHERE ist_aktiv = true
ORDER BY abteilungsname
LIMIT 10000;
"Ausführen" klicken um die Abfrage zu testen
Ergebnisse in der Vorschau überprüfen:
Erste Spalte: Wird zu Ihren Filteroptionen
Zusätzliche Spalten: Werden ignoriert, können aber zur Orientierung helfen, hier allerdings auf Duplikate achten!
Keine leeren Werte: NULL oder leere Strings werden automatisch ausgefiltert
"Speichern" klicken wenn die Abfrage korrekt ist
Wichtige SQL-Elemente:
-- Eindeutige Werte (Duplikate vermeiden), idealerweise nur eine Spalte (z. B. kategorie)
SELECT DISTINCT kategorie
-- Nur relevante Daten
WHERE status = 'aktiv'
-- Sortierung für bessere UX
ORDER BY abteilungsname
-- Maximale Anzahl (immer verwenden)
LIMIT 10000
Filter speichern und testen
Filter speichern - die SQL-Abfrage wird automatisch mit gespeichert
Filter im Bericht testen:
Filter öffnen → sollte die Werte aus Ihrer SQL-Abfrage zeigen
Andere Filter ändern → abhängige Filter sollten sich aktualisieren
Daten im System ändern → Filter sollten neue Optionen zeigen
Ihr dynamischer Filter ist jetzt aktiv! Die Optionen aktualisieren sich automatisch basierend auf Ihren Daten und anderen Filterauswahlen.
Erweiterte Techniken
Abhängige Filter erstellen
Erstellen Sie Filter, die auf andere Filter reagieren:
-- Städte basierend auf ausgewähltem Bundesland
SELECT DISTINCT city_name
FROM locations
WHERE state = $bundesland_filter -- <- dies ist der Systemname des Filters "Bundesland"
AND population > 1000
ORDER BY city_name;
Filter-Verkettung:
Bundesland-Filter → Benutzer wählt "Bayern"
Stadt-Filter → Zeigt nur bayerische Städte
Bezirk-Filter → Zeigt nur Bezirke der gewählten Stadt
Optimierung
Für große Datenmengen optimieren Sie Ihre Abfragen:
-- Indizierte Spalten verwenden
SELECT DISTINCT status
FROM projects
WHERE created_date >= '2024-01-01' -- Indexed column
AND department_id IN (1, 2, 3) -- Indexed values
ORDER BY status
LIMIT 50;
-- Subqueries vermeiden wenn möglich
-- Statt:
SELECT DISTINCT category
FROM products
WHERE id IN (SELECT product_id FROM sales WHERE year = 2024)
-- Besser:
SELECT DISTINCT p.category
FROM products p
JOIN sales s ON p.id = s.product_id
WHERE s.year = 2024;
Praktische Beispiele
Beispiel 1: Abteilungsfilter mit aktiven Mitarbeitern
-- Zeigt nur Abteilungen, die derzeit aktive Mitarbeiter haben
SELECT DISTINCT a.abteilungsname
FROM abteilungen a
JOIN mitarbeiter m ON a.id = m.abteilungs_id
WHERE m.status = 'aktiv'
AND m.ende_datum IS NULL
ORDER BY a.abteilungsname
LIMIT 10000;
Beispiel 2: Statusfilter basierend auf Projekt und Jahr
-- Zeigt nur Status, die für das gewählte Projekt und Jahr existieren
SELECT DISTINCT projektstatus
FROM projekt_historie
WHERE projekt_typ = $projekt_typ
AND YEAR(erstellt_datum) = $jahr
AND projektstatus IS NOT NULL
ORDER BY
CASE projektstatus
WHEN 'Geplant' THEN 1
WHEN 'In Bearbeitung' THEN 2
WHEN 'Abgeschlossen' THEN 3
ELSE 4
END
LIMIT 10000;
Fehlerbehebung
"Keine Optionen verfügbar"
Mögliche Ursachen:
SQL-Abfrage gibt keine Ergebnisse zurück
Erste Spalte enthält nur NULL-Werte
Lösungsansätze:
-- Debug-Version: Zeigt auch NULL-Werte
SELECT DISTINCT
abteilungsname,
COUNT(*) as anzahl_datensaetze
FROM projekte
GROUP BY abteilungsname
ORDER BY abteilungsname
LIMIT 10000;
-- Explizit NULL-Werte ausschließen
SELECT DISTINCT abteilungsname
FROM projekte
WHERE abteilungsname IS NOT NULL
AND abteilungsname != ''
AND TRIM(abteilungsname) != ''
LIMIT 10000;
"Filter aktualisiert sich nicht"
Häufige Probleme:
Variablennamen stimmen nicht mit anderen Filtern überein
SQL-Syntax-Fehler verhindert Ausführung
Speicher-Probleme bei sehr häufigen Änderungen
Diagnose:
SQL-Editor öffnen → "Ausführen" klicken → Fehlermeldungen prüfen
Variable Namen überprüfen → Müssen exakt mit Filter-Systemnamen übereinstimmen
Browser-Cache leeren → Manchmal hilft ein Neuladen der Seite
"Leistungs-Probleme"
Für langsame Abfragen:
-- LIMIT ist Pflicht (maximal 10.000 Zeilen)
SELECT DISTINCT kategorie
FROM grosse_tabelle
WHERE bedingungen
ORDER BY kategorie
LIMIT 10000;
-- Indizierte Spalten in WHERE nutzen
WHERE indizierte_spalte = wert
Wichtig: Dynamische Filter führen SQL-Abfragen bei jeder Verwendung aus. Achten Sie auf die Leistung bei großen Datenmengen und häufig genutzten Filtern.
Best Practices
SQL-Abfragen schreiben
Erste Spalte ist entscheidend - Nur die erste Spalte wird für Optionen verwendet
DISTINCT verwenden - Vermeidet doppelte Einträge in der Dropdown-Liste
ORDER BY hinzufügen - Sortiert Optionen für bessere Benutzererfahrung
NULL-Werte filtern - Leere Optionen vermeiden
Leistung beachten - Immer LIMIT 10000 verwenden (Pflicht)
Variablen verwenden
Exakte Namen verwenden -
$filter_systemname
muss genau mit dem Filter-Systemnamen (Slug) übereinstimmenNULL-Behandlung - Berücksichtigen Sie leere Filter:
WHERE (status = $status OR $status IS NULL)
Typen beachten - Text-, Zahlen- und Datumsfilter haben verschiedene Formate
Wartung und Überwachung
Regelmäßig testen - Überprüfen Sie Filter nach Datenbank-Änderungen
Leistung überwachen - Langsame Abfragen können die Benutzererfahrung beeinträchtigen (maximal 10.000 Zeilen möglich)
Dokumentation - Kommentieren Sie komplexe SQL-Abfragen für andere Bearbeiter
Profi-Tipp: Beginnen Sie mit einfachen DISTINCT-Abfragen und erweitern Sie diese schrittweise um Variablen und Logik. Testen Sie jede Änderung sofort im SQL-Editor, bevor Sie den Filter speichern.
Zuletzt aktualisiert
War das hilfreich?