Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht... - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Sander (8133 Beiträge) am Samstag, 1.September.2007, 11:50.
    Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

      der Tip ist nicht auf meinem mist gewachsen.

      eigentlich sollte
      feld==_ ab v3 funzen - geht aber bei meinen test weder bei zahl noch bei text
      http://doku.baseportal.de/649.html#10

      aber wie siehts so aus?

      get ["feld","==",""],"db";
      
      klappt bei mir


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Samstag, 1.September.2007, 11:25.
    Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

      hab alleweil in alten Beiträgen gesucht, aber leider nix gefunden, deshalb Bitte um Hilfe.

      Datenbank mit Feldern s_feld1, s_feld2 s_feld3, welche auf Sortierung Zahl stehen. Wertebereich Ganzzahl ab Null (Zahl 0) - also genauso wie beim ID-Feld. Diese Felder können aber auch leer sein, wenn sie das sind, sollen die betreffenden DS in folgendem get-Ausdruck nicht mit geholt werden:
      get "s_feld1==0 s_feld2==0 s_feld3==0 sort=feldn", $db_struktur, "erghash";
      

      Andersrum dann die gegenteilige Bedingung, die ich im Moment überhaupt nicht zu fassen bekomme:
      Wenn in einem der betreffenden Felder nichts drin steht (also ein Leerwert ist), sollen die betreffenden DS ausgegeben werden.
      Der Trick von Sander mit der Klammer (get "s_feld<)" funktioniert offenbar nicht wenn Zahl als Sortierkriterium eingestellt wurde, ich brauche aber auch zwingend eine Sortierung nach Zahl)

      Danke schon mal im Voraus für einen Tipp

      Ruben

     Antworten

    Beitrag von Sander (8133 Beiträge) am Samstag, 1.September.2007, 11:50.
    Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

      der Tip ist nicht auf meinem mist gewachsen.

      eigentlich sollte
      feld==_ ab v3 funzen - geht aber bei meinen test weder bei zahl noch bei text
      http://doku.baseportal.de/649.html#10

      aber wie siehts so aus?

      get ["feld","==",""],"db";
      
      klappt bei mir

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 1.September.2007, 13:03.
    Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

      hey, danke erst mal, ich bau das mal um, an die Listenschreibweise denkt man immer nicht...
      Laufen muss es in Linzenz 2 ( 2.3.12) - werds dann mal ausprobieren, die get umschreiben dürfte das Problem nicht sein.
      Achso - muss da bei mehrfachen Bedingungen der Operator (&) mit geschrieben werden oder ist da auch "und" als Voreinstellung - und wie kann man evtl. auch eine "oder" Verknüpfung damit hinbekommen?

      Danke für ergänzende Hinweise

      Ruben

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 1.September.2007, 15:40. WWW: hummelexpress.de
    Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 2.September.2007, 09:24.
    Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

      Hi Claus,
      ja, danke, das kannte ich schon und genau das ist das Problem, BasePortal behandelt die Zahl 0 und Nichts, wie Perl das eben macht, gleich - es meint, es sei nicht vorhanden.
      Wenn man also Abfragen macht:
      bei
      if ($var){ tuwas }
      ist die Bedingung erfüllt, wenn der Wert von $var nicht null, 0 oder leer ist
      
      bei
      if (!var){ sagdas }
      demgegenüber ist die Bedingung eben auch erfüllt, wenn der Zahlwert 0 in dieser Var steht.

      Für Variablen mag das noch zur Not angehen, man kann nach meinen Erfahrungen nämlich dann explizit abfragen
      if ($var >= 0) { nadannmallos }
      wobei offenbar die Perlinterne Typumwandlung greift und es aufgrund dieser Abfragebedingungssyntax (das >= ) folgerichtig erkennt, dass es sich um Zahlen handelt.
      Im  BasePortal-get jedoch (zumindest bei meiner Lizenz V. 2.3.12) wird das nicht gemacht und ich habe bis jetzt leider keine Möglichkeit gefunden, eine multiple Filterbedingung mit Sortierung so zu setzen.
      
      Das ist schade, und im Moment häng ich da bei einem unterdessen dringenden Projekt etwas ziemlich in der Luft deswegen....

     Antworten

    Beitrag von Friesecke (245 Beiträge) am Sonntag, 2.September.2007, 17:13.
    Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

      die Abfragebedingung erweitern
      if($var>=0 and $var ne ""){...}
      
      Friesecke

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Montag, 3.September.2007, 09:55.
    Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

      Es gibt zwei Arten mit einem Wert umzugehen, man behandelt in als Zahl, Dann ist nichts gleich null oder man behandelt in als Text, dann ist 0 iregend ein Text und "" eben auch ein anderer Text (mit nichts drin).

      In Perl macht man das mit den verschiedenen Operatoren ("" >= 0 ist wahr und "" eq "0" ist unwahr)
      In Baseportal Datenbanken macht man diese unterscheidung mit der sortierungs Option. Man kann also garnicht abfragen auf leer, weil es von der Indexierung schon kein Unterscheid machen sollte.

      Was du also wünschst, währe eine doppelte sortierung nach Zahl UND nach Text. (was etwas kompliziert umzusetzen ist)

      Ich versuch mir aber gerade andersherum vorzustellen wo man als Benutzer erwartet, dass es einen Unterschied macht, wenn man in ein reines Zahlenfeld nichts, oder null reinschreibt. (Hiermit bestelle ich " " Äpfel)

      Vielicht ist ja eine Checkbox Feld das was du suchst?

     Antworten

    Beitrag von Friesecke (245 Beiträge) am Montag, 3.September.2007, 13:52.
    Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nicht...

      Hallo Pouraga,

      meine Antwort bezog sich auf if-Abfragen. Die laufen nicht
      über den Index.
      Separieren von "" und 0 also z.B. über Index mit var<1 z.B. mit <loop>
      und dann innerhalb mit if($feld ne ""){Ausgabe}

      Bei Abfragen nach dem Bestand eines Artikels heisst 0, es ist keiner da.
      Dagegen heisst "", Bestand ist nicht gezählt, also unbekannt.

      Gruß
      Friesecke

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Dienstag, 4.September.2007, 07:48.
    Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nich

      Hallo, Friesecke, Hallo, Pouraga,

      ja, Friesecke hat es richtig erkannt, ist halt nicht gezählt bzw. in meinem Fall nicht im mathematischen Sinne eineindeutig zuordenbar (weil bei mir 4 Zahlfelder für die eineindeutigkeit vonnöten sind, die dann intern wieder 4 Sortiergruppen ergeben muss das so sein...).

      Und genau diese Unterscheidung brauche ich. Allerdings eben auch einen verschachtelten get-while_get_next-Ausdruck, wo je nach Wert in einem Feld nach Ebenennummer und Unterebenennummer sortiert nach Positionsnummern in Abhängigkeit von einer ebefalls numerischen Gruppenzugehörigkeit eine Ausgabe erfolgen soll.
      Klar geht das mit if und kombinierten Abfragebedingungen, aber das bedeutet zum einen ein Zwischenspeichern der bspw. nicht eineindeutig zuordenbaren Werte und zum Anderen eine nicht in der gewünschten Reihenfolge stehenden Ausgabe.
      Das wiederum wäre ja mit nem Hash zu lösen.
      Mir ging es einfach darum, Quelltext zu vereinfachen und möglichst vieles in den gets zu erschlagen, immerhin sind es bis zu 10 ineineander verschachtelte gets, wobei es dann passieren kann, dass in jedem die gesamte Datenbank durchlaufen werden muss falls ein treffender Datensatz für die Bedingung gefunden wird.
      Und das kostet Zeit - bei 1000 Datensätzen kann das im "ungünstigsten Fall" allein an die 10 hoch 30 Datenbankdurchläufe bedeuten. Da krirscht der Server schon bei 100 Datensätzen bei entsprechender "Auslegung"...

      Trotzdem danke für die Erklärung an beide, da ist das nochmal klarer geworden.
      Im Moment stellt es auch kein Problem von der Laufzeit im "real life" dar, weil die Konstellation nur 3fach verschachtelt ist - dann eben mit Abfragen und Zwischenspeichern...

     Antworten

    Beitrag von Friesecke (245 Beiträge) am Dienstag, 4.September.2007, 09:21.
    Re: Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht

      Hallo hempelr,

      Du kannst Dir eine Routine schaffen, die in einem einmaligen Durchlauf der Datenbanken "" ersetzt durch einen nicht vorkommenden Wert, z.B. 999999
      Dann musst Du an anderer Stelle bei der Ausgabe natürlich 999999 durch "" ersetzen.

      Friesecke

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Mittwoch, 5.September.2007, 09:46.
    Re: Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht

      Hallo, Friesecke,

      ja danke, das ist ne Idee...
      Die Routine zu globalen Ändern ist ja im DB-Tool (ist glaub ich auch in der Bib drin) schon vorhanden - also kein Problem....
      Ist zwar nur ne Krücke, aber auf alle Fälle besesr als nix ;-)

     Antworten

    Beitrag von Claus (4645 Beiträge) am Dienstag, 4.September.2007, 11:12. WWW: hummelexpress.de
    Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht nich

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Dienstag, 4.September.2007, 11:18.
    Re: Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht

     Antworten

    Beitrag von Claus (4645 Beiträge) am Dienstag, 4.September.2007, 11:51. WWW: hummelexpress.de
    Re: Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht

      Fein, aber wo hat er denn etwas von einem "Zahlenfeld" geschrieben?;-)

      >Wertebereich Ganzzahl ab Null (Zahl 0) - also genauso wie beim ID-Feld......
      

      Also, warum denn kein Textfeld dafür nehmen?

      Gruß

      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 4.September.2007, 12:11.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - geht

      nich zahlenfeld, sondern sortierung auf zahl. und das schreibt er als "zwingend"

     Antworten

    Beitrag von Claus (4645 Beiträge) am Dienstag, 4.September.2007, 12:20. WWW: hummelexpress.de
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - g

      und wo ist das Problem?;-)

      habe das jetzt auf "sortiert nach Zahl" umgestellt, klappt auch...

      Gruß

      Claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 4.September.2007, 12:25.
    Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Filterung auf Zahlwert 0 - ohne Leewerte - g

      nich so richtig:

      0, leer, 6,7,....

     Antworten


     
 Liste der Einträge von 12450 bis 12600:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.08s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!