ilch Forum » Allgemein » Plauder Ecke » Letzten Datensatz anzeigen

Geschlossen
  1. #1
    User Pic
    juergp gelöschter User
    Hallo Leute!

    Ich habe ein Problem mit einer Abfrage: grumml
    Es sind drei Tabellen vorhanden: Proben, Untersuchungsergebnisse und Probenplatten, wobei die Proben mit den U-Ergebnissen und die U-Ergebnisse mit den Platten verknüpft sind.

    Meine bisherige Abfrage:
    SELECT p.PROB_NR, ue1.USEG_WERT1, ue2.USEG_WERT2 pl.PRPL_NR
    FROM Proben p
    LEFT JOIN Untersuchungsergebnisse ue1 ON ue1.USEG_PROB_OID=p.PROB_OID AND ue1.USEG_ART=1 AND ue1.GUELTIG=\'J\'
    LEFT JOIN Untersuchungsergebnisse ue2 ON ue2.USEG_PROB_OID=p.PROB_OID AND ue2.USEG_ART=2 AND ue2.GUELTIG=\'J\'
    LEFT JOIN Untersuchungsergebnisse ue ON ue.USEG_PROB_OID=p.PROB_OID
    LEFT JOIN Probenplatten pl ON pl.PRPL_OID=ue.USEG_PRPL_OID
    WHERE PROB_NR=1350

    Ich bekomme die 2 gültigen Ergebnisse einer bestimmte Probe und eine Platte zurück.
    Mein Problem: Wie kann ich mir immer nur die letzte eingetragene Platte anzeigen lassen.
    Zur Info:
    1. Es kann auch vorkommen, dass die Platte eines nicht gültigen 3. Ergebnissen angezeigt werden soll.
    2. die PRPL_NR ist ein String, deshalb kann ich nicht MAX(pl.PRPL_NR) verwenden

    Hoffe, mir kann wer helfen!!
    Vielen Dank im Voraus

    lg
    juergp
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    SLJ Hall Of Fame
    Registriert seit
    18.05.2004
    Beiträge
    15.492
    Beitragswertungen
    3 Beitragspunkte
    Du must das einfach sortieren nach DESC also ordner er es umgekehr

    also Z - A

    und als anzeige limit machst du 1.

    Z.B. so

    ORDER BY id DESC LIMIT 1

    Bzw. du must halt schauen nach was du das sorttieren willst aber id müsste passen.

    mfg
    SLJ

    externer Link
    Ilch 1.0.4 PHP 7.0 und PDO Fähig na klar lächeln
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    juergp gelöschter User
    Erstmals Danke SLJ!!

    Das mit DESC funktioniert nicht, da es nicht vom Alphabet abhängen darf.

    Bsp: Es sind Platten in folgender Reihenfolge angelegt:
    1. B1
    2. G1
    3. B2
    4. L1
    5. G2

    Wenn ich nun mit DESC ordne gibt er mir die Platte L1 zurück. Ich brauche aber die letzte angelegte Platte- also G2 (aber mit dem Statement von meinem ersten Eintrag!)

    Hoffe Du kannst mir trotzdem helfen.

    lg
    juergp
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    SLJ Hall Of Fame
    Registriert seit
    18.05.2004
    Beiträge
    15.492
    Beitragswertungen
    3 Beitragspunkte
    deswegen haeb ich das Bsp auch mit der id gemacht die neuste kommt immer zumschluss !!

    Und ASC DESC zählen auch von 1-xx bzw von xx-1

    mfg
    SLJ
    externer Link
    Ilch 1.0.4 PHP 7.0 und PDO Fähig na klar lächeln
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    juergp gelöschter User
    Danke nochmals SLJ,

    Das funktioniert soweit.
    Nur wenn ich das in mein gesamtes Statement einbaue bekomme ich nicht das Richtige zurück, da ich noch zusätzlich die Anzahl aller Ergebnisse von ue1 und ue2 brauche.

    Ich hoffe, dass ich mich verständlich ausdrücke:

    Das sieht nun folgendermaßen aus:
    SELECT p.PROB_NR, ue1.USEG_WERT1, ue2.USEG_WERT2, COUNT(ue1.USEG_OID), COUNT(ue2.USEG_OID), MAX(pl.PRPL_NR)
    LEFT JOIN.....(bleibt gleich wie oben)
    WHERE PROB_NR=1350 GROUP BY p.PROB_NR DESC, ue.USEG_OID DESC
    grumml
    1. Nun bekomme ich aber drei Ergebnisse der einen Probe mit allen Platten (Es hilft auch nichts wenn ich DISTINCT im Count hinzufüge, es muß aber am COUNT liegen, wenn ich das rauslösche funktionierts, leider brauche ich die Anzahl traurig )

    2. LIMIT 1 kann ich auch nicht verwenden, da die Möglichkeit besteht mehrere Proben anzuzeigen.

    Nochmals Vielen Dank

    lg
    juergp
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    juergp gelöschter User
    Hallo SLJ,

    ich bins wieder,
    Es liegt nicht am COUNT sondern an MAX() und bei meinem ORDER oder GROUP.
    Das hab ich nun rausgefunden.

    Sobald ich nach der Platten OID sortiere, damit er die Letzte anzeigt, kommen soviele Datensätze der einen Probe wie Ergebnsse vorhanden sind.

    Ich weiß nur nicht wie ich die Sortierung ändern muß, für das korrekte Ergebnis.

    Nochmals die Erklärung: Er soll die Anzahl aller Ergebnisse (alle ue1 und alle ue2 getrennt aufrufen) mit der Probennummer und die letzte Platte der Ergebnisse anzeigen, wobei die Platte nicht alphabetisch die letzte sein muss.

    Danke .

    lg
    juergp
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    scaRFhogg Mitglied
    Registriert seit
    02.06.2003
    Beiträge
    750
    Beitragswertungen
    0 Beitragspunkte
    Mach doch einfach eine seperate Abfrage mit dem COUNT.
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Plauder Ecke

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten