Fehler bei Abfrage der Tabelle (SQL/PHP)

  • Hallo, ich habe ein Problem - zur Veranschaulichung habe ich ein Screenshot angehängt.

    In der Tabelle habe ich ein Pulldown-Menü mit den Optionen
    1.) - Alle Punkte anzeigen
    2.) - Nur offene Punkte anzeigen (Fortschritt <100% UND keinAbschlussdatum!)
    3.) - Nur geschlossene Punkte anzeigen (Fortschritt = 100% UND Abschlussdatum)



    1. und 3. funktionieren wunderbar - aber der 2. Punkt (Alle offenen Punkte anzeigen) leider nicht so ganz.

    Grund dafür sind die "History-Punkte" (3 bzw. 3.1), diese haben die Variable his_nr - die normalen Punkte einfach lfd_nr.

    Bei dem Punkt 3 wurden z.B. bis zum Abschluss 2 weitere Schritte gemacht. 1. Status war 0%, der 2. war 20% und dann der Abschluss unter Punkt 3.3 mit 100%. Das heisst dieser Punkt ist abgeschlossen.

    Rufe ich jetzt aber mit meiner Funktion alle offenen Punkte ab

    PHP
    $where ='WHERE fort<100 and a_dat="" ';


    erscheinen dort auch Punkt 3 und 3.1 - was ich aber nicht will. Der Befehl soll NUR die jeweils höchsten his_nr einer lfd_nr nach den Kriterien (Status <100% and a_dat="") abfragen.

    Meine Frage nun: Wie kann ich den Befehl ändern, bzw. welche Anweisung muss ich benutzen um der Option "Alle offenen Punkte anzeigen" zu sagen:

    Bitte rufe alle Punkte ab die die Merkmale Fortschritt<100% UND keinAbschl.datum haben, aber überprüfe dies pro lfd_nr NUR in dem Eintrag mit der höchsten his_nr

    Ist es einigermaßen verständlich was ich für ein Problem habe? :)
    (Kurz gesagt: Er soll mir bei der Abfrage einfach nicht die Punkte 3 und 3.1 anzeigen, weil die durch 3.3 schon "geschlossen" gelten)

  • Ich hab zwar kein Plan, was du da vorhast, aber so Sachen wie
    "ORDER, BY, WHERE, SELECT,..." werden groß geschrieben und ich hab bis jetzt auch noch keinen Query gesehen der Gänsefüßchen enthält, dort benutzt man normalerweise Hochkommas '

    Vielleicht solltest du ein paar MySQL Felder erklären und ein bisschen mehr Code oder den Aufbau der Tabelle posten,...
    hmm... Ich blick zumindest nicht durch
    Gruß crAzywuLf

  • Bringt mich jetzt auch nicht weiter bei meinem Problem, dass da immer noch lautet:

    Wie kann ich den Befehl ändern, bzw. welche Anweisung muss ich benutzen um der Option "Alle offenen Punkte anzeigen" zu sagen:

    Bitte rufe alle Punkte ab, die die Merkmale Fortschritt<100% UND kein Abschlussdatum haben,
    aber überprüfe dies pro lfd_nr NUR in dem Eintrag mit der höchsten his_nr

  • Bringt mich jetzt auch nicht weiter bei meinem Problem, dass da immer noch lautet:

    Wie kann ich den Befehl ändern, bzw. welche Anweisung muss ich benutzen um der Option "Alle offenen Punkte anzeigen" zu sagen:

    Bitte rufe alle Punkte ab, die die Merkmale Fortschritt<100% UND kein Abschlussdatum haben,
    aber überprüfe dies pro lfd_nr NUR in dem Eintrag mit der höchsten his_nr

    poste mal die mysql tabelle ohne die können wir dir so nicht weiterhelfen

  • select * from eintraege where fort < 100 and (a_dat is null or a_dat = '') order by his_nr DESC limit 1

    ungetestet

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Habs mit ner select MAX IN Variante gelöst .... Danke an KYLT für deinen Vorschlag, hat mich auf die entscheidende Idee gebracht :)