![]() |
Datenbank: InterBase • Version: 7.5 • Zugriff über: Delphi 2006 Prof.
Problem mit Select
Meine Abfrage sieht so aus:
SQL-Code:
Es funktioniert soweit, aber jetzt möchte ich noch eine letzte Tabelle hier mit einbinden:
select
k.GERAETEKUNDEID, V2.VORGANGSBEZEICHNUNG AS "VorHygieneBez", V1.VORGANGSBEZEICHNUNG AS "VorFilterBez", k.BEMERKUNG, k.FILTERWECHSEL, k.WARTUNG, k.KUNDENLIEFERMASTERID, k.VORGANGFILTER, k.VORGANGHYGIENE, k.GERAETEMASTERID, g.SERIENNR, a.ARTIKELBEZEICHNUNG, t.TYPBEZEICHNUNG from GERAETEKUNDE k, GERAETEN g, ARTIKELPALETTEN a, TYPEN t JOIN GERAETVORGANG V1 ON (k.VORGANGFILTER = V1.GERAETVORGANGID) JOIN GERAETVORGANG V2 ON (k.VORGANGHYGIENE = V2.GERAETVORGANGID) where k.GERAETEMASTERID=g.GERAETENID AND g.ARTIKELPALETTEMASTERID=a.ARTIKELPALETTENID AND a.TYPMASTERID=t.TYPENID order by g.SERIENNR Tabelle WartungHistory HistoryID, Datum, Bemerkung, GerMasterID Verknüpft soll die Tabelle über: GERAETEN.GeraetenID und GerMasterID werden, ich weiß dass es mit einem weiteren Join geht aber ich möchte das er mit den Datensatz (aus WartungHistory) mit dem höchsten Datum (ahb mit MAX(Datum) versucht, ging's aber nicht :-( ) ausgibt und da komme ich nicht weiter. Ich weiß das diese Abfrage nicht optimal ist (bin noch Anfänger), wenn jemand einen besseren Vorschlag hat, dann freue ich mich wieder was dazu lernen zu können. Viele Grüsse Andreas [edit=Sharky]SQL-Tags eingefügt. Mfg, Sharky[/edit] |
Re: Problem mit Select
Hi,
ich würde das so ergänzen: (getippt - nicht getestet)
SQL-Code:
[edit]verschreibser[/edit]
select
k.GERAETEKUNDEID, V2.VORGANGSBEZEICHNUNG AS "VorHygieneBez", V1.VORGANGSBEZEICHNUNG AS "VorFilterBez", k.BEMERKUNG, k.FILTERWECHSEL, k.WARTUNG, k.KUNDENLIEFERMASTERID, k.VORGANGFILTER, k.VORGANGHYGIENE, k.GERAETEMASTERID, g.SERIENNR, a.ARTIKELBEZEICHNUNG, t.TYPBEZEICHNUNG, max( g2.Datum ) from GERAETEKUNDE k, GERAETEN g, ARTIKELPALETTEN a, TYPEN t JOIN GERAETVORGANG V1 ON (k.VORGANGFILTER = V1.GERAETVORGANGID) JOIN GERAETVORGANG V2 ON (k.VORGANGHYGIENE = V2.GERAETVORGANGID) JOIN GERAETEN G2 ON (g2.GettaetenID = GerMasterID) where k.GERAETEMASTERID=g.GERAETENID AND g.ARTIKELPALETTEMASTERID=a.ARTIKELPALETTENID AND a.TYPMASTERID=t.TYPENID group by k.GERAETEKUNDEID, V2.VORGANGSBEZEICHNUNG, V1.VORGANGSBEZEICHNUNG, k.BEMERKUNG, k.FILTERWECHSEL, k.WARTUNG, k.KUNDENLIEFERMASTERID, k.VORGANGFILTER, k.VORGANGHYGIENE, k.GERAETEMASTERID, g.SERIENNR, a.ARTIKELBEZEICHNUNG, t.TYPBEZEICHNUNG order by g.SERIENNR |
Re: Problem mit Select
Welche Werte von Wartungshistorie benötigst du?
|
Re: Problem mit Select
Danke für die schnelle Hilfe, brauche das letzte(neuste) (Datum der letzten Wartung) Datum. Dachte auch schon ans Gruppieren, wußte nur nicht wie ich es anfassen soll
Andreas |
Re: Problem mit Select
Dann könntest du auch einen Subselect verwenden
|
Re: Problem mit Select
Wie könnte es aussehen (wird'S von InterBase unterstützt?)? Kann ich dann auf Aggregatfunktionen verzichten?
|
Re: Problem mit Select
Hallo!
Nicht getestet!
Delphi-Quellcode:
select
k.GERAETEKUNDEID, V2.VORGANGSBEZEICHNUNG AS "VorHygieneBez", V1.VORGANGSBEZEICHNUNG AS "VorFilterBez", k.BEMERKUNG, k.FILTERWECHSEL, k.WARTUNG, k.KUNDENLIEFERMASTERID, k.VORGANGFILTER, k.VORGANGHYGIENE, k.GERAETEMASTERID, g.SERIENNR, a.ARTIKELBEZEICHNUNG, t.TYPBEZEICHNUNG from GERAETEKUNDE k join GERAETEN g on k.GERAETEMASTERID = g.GERAETENID join ARTIKELPALETTEN a on g.ARTIKELPALETTEMASTERID = a.ARTIKELPALETTENID join TYPEN t on a.TYPMASTERID = t.TYPENID JOIN GERAETVORGANG V1 ON k.VORGANGFILTER = V1.GERAETVORGANGID JOIN GERAETVORGANG V2 ON k.VORGANGHYGIENE = V2.GERAETVORGANGID where g.GeraetenID in ( select GerMasterID from ( select GerMasterID, max(Datum) from WartungHistory group by ) ) order by g.SERIENNR |
Re: Problem mit Select
Hi,
Zitat:
da hierbei das Subselect für jede Datenzeile der Ergebnisdatenmenge ausgeführt werden muss (wie das bei Interbase ist weiss ich nicht, möglicherweise ähnlich). @automatix [edit]falscher text entfernt - heute ist nicht mein tag :drunken: [/edit] |
Re: Problem mit Select
Ich teste beides durch, Gruppierung wird wohl die beste Lösung sein.
Danke für Eure Hilfe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz