Komplexe Datenfilterung
Naps
- php
Hi,
ich habe eine MySQL Abfrage die sehr komplex ist. Ca 20 Bedingung werden in 6 Tabellen überprüft.
Mein Problem ist, dass es jedes mal eine Katastrophe ist die Abfrage anzupassen wenn sich Bedingungen ändern oder neue dazu kommen.
Würdet ihr so etwas mit getrennten abfragen erledigen? Vielleicht die "Rohdaten" in einem Array speichern und dann einfach die verschiedenen "Filter" darauf anwenden?
MfG Naps
Hello,
ich habe eine MySQL Abfrage die sehr komplex ist. Ca 20 Bedingung werden in 6 Tabellen überprüft.
Mein Problem ist, dass es jedes mal eine Katastrophe ist die Abfrage anzupassen wenn sich Bedingungen ändern oder neue dazu kommen.
Ist denn das Baumuster der Abfrage jedes Mal ein anderes, oder sind es nur die Werte?
Die Werte anzupassen und ggf. mal aufgrund der Werte eine Bedingung hinzuzufügen oder wegzulassen, das sollte doch mit einer einfachen Funktion möglich sein.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Ist denn das Baumuster der Abfrage jedes Mal ein anderes, oder sind es nur die Werte?
Ja "leider". Also nur dann, wenn die Applikation weiterentwickelt wird.
Bei vielen anderen Abfragen ist es kein Problem, die werden halt einfach angepasst / geändert.
Mir geht es eigentlich auch darum, ob es bessere Wege gibt, also eine ewig lange SQL abfrage.
MfG Naps
Hello,
na, dann würde ich Basic nehmen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Mir geht es eigentlich auch darum, ob es bessere Wege gibt, also eine ewig lange SQL abfrage.
Kommt darauf an, wie Dein Code an die DB gebunden ist. Bei einer losen Kopplung ist die Datenhaltung abstrahiert, d.h., Du arbeitest nur mit dem Code und darin definierten Datenstrukturen, was eine Filterung unter Umständen einfacher macht.
Einfaches Beispiel:
my $wanted = $self->{DBF}->wanted(qw(title descr, class));
filtert die Daten in eine Hash-Referenz, wo nur die Attribute {title, descr, class} enthält (für alle in der Projektverwaltung konfigurierten URLs).
my $foo = $wanted->{"/foo.html"}
liefert dann die Attribute für einen speziellen URL.