![]() |
Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE
LEFT JOIN mit Max-Wert aus der anderen Tabelle
Hallo zusammen,
wie kann ich mit einem LEFT JOIN eine Tabelle verknüpfen, von der ich nur den Max-Wert haben will ? So habe ich angefangen:
Delphi-Quellcode:
Wie muss ich das MAX umbauen ?
SELECT SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER FROM SYSDBP.DBP_LEISTUNGSWERTE
LEFT JOIN SYSDBP.DBP_AUFTRAEGE ON SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER AND MAX(SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT) Gruss Holger |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Hallo,
das habe ich nicht ganz verstanden, was willst Du erreichen? |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Es fehlt die eigentliche Bedingung
|
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
In der ersten Tabelle sind die Stammdaten,
in der zweiten die Aufträge, jetzt möchte ich die beiden Tabellen so verbinden, das in der dann entstehenden Gesamttabelle nur das Datum des letzten Auftrages angezeigt wird. Das ginge bestimmt mit einem Group by über die Gesamttabelle, aber da mache ich schon einen Count ... Gruss Holger |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Du willst also die neuesten Aufträge anzeigen? Oder sollen alle Aufträge mit dem neuesten Auftragsdatum gelistet werden (das macht ja IMHO keinen Sinn)?
|
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Da würde ich einen Subquery nehmen
|
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Ich möchte zu dem jeweiligen Stammdatensatz den letzten Auftrag ( neustes Datum ) anzeigen.
Dachte um es einfach zu halten, joine ich nur den jeweils letzten Auftrag. Die anderen Aufträge sind unrelevant. Brauche das aktuelle Datum des letzten Auftrages für den jeweiligen Stammdatensatz. Gruss Holger |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Ungetestet:
SQL-Code:
SELECT SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER,SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT
FROM SYSDBP.DBP_LEISTUNGSWERTE JOIN SYSDBP.DBP_AUFTRAEGE ON SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER WHERE SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT = (SELECT MAX(SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT) FROM SYSDBP.DBP_AUFTRAEGE) |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Ich versuche mal meine Abfrage hier abzubilden. Meine damit den relevanten Teil:
Delphi-Quellcode:
Wie bekomme ich hier den nur den MAX Wert von SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT
SELECT COUNT(SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER) AS DB_ANZAHL, SYSWVKISU.ANLAGE.ANLAGE
FROM (SYSWVKISU.ANLAGE LEFT JOIN SYSDBP.DBP_LEISTUNGSWERTE ON SYSWVKISU.ANLAGE.ANLAGE = SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER) LEFT JOIN SYSDBP.DBP_AUFTRAEGE ON SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER GROUP BY SYSWVKISU.ANLAGE.ANLAGE Gruss Holger |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Setze mal meine WHERE-Klausel unter Dein GROUP BY.
|
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Das habe ich nun gemacht.
Nur dann verschwinden alle Datensätze. Wenn ich nun eine Erweiterung einbaue:
Delphi-Quellcode:
Dann sind alle Datensätze da, nur die wo Aufträge vorhanden sind, die fehlen
WHERE SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT = (SELECT MAX(SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT) FROM SYSDBP.DBP_AUFTRAEGE)
OR SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT IS NULL) Was ist falsch ? Gruss Holger |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
|
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Noch ein Anmerkung von mir, bevor ich weiter lese:
unter meinen Group by kann ich kein Where packen. Nur darüber ? Gruss Holger |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Stimmt, mein Fehler.
|
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Hi,
aber wenn ich Deine WHERE - Bedingung herraus nehme, habe ich das was ich will. Nur werde ich nun Probleme bekommen, wenn mehr als ein Auftrag in der Tabelle Auftraege pro Stammdatensatz vorhanden ist. Da muss noch ein Fehler in der WHERE - Bedingung sein ??? Gruss Holger |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Ich hoffe, ich habe Dich jetzt verstanden. Was Du suchst, müsste
![]() |
Re: LEFT JOIN mit Max-Wert aus der anderen Tabelle
Hätte ja nicht gedacht, das das so kompliziert ist, aber so klappt es nun:
Delphi-Quellcode:
Gruss und vielen vielen dank
...
LEFT JOIN SYSDBP.DBP_AUFTRAEGE ON SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER AND SYSDBP.DBP_LEISTUNGSWERTE.ANZAHL = SYSDBP.DBP_AUFTRAEGE.DB_REGISTER AND SYSDBP.DBP_AUFTRAEGE.SIGMA_AUFTYP_ID = '50' AND SYSDBP.DBP_AUFTRAEGE.STATUS = 'abgeschlossen' WHERE (SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT = (SELECT MAX(SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT) FROM SYSDBP.DBP_AUFTRAEGE WHERE SYSDBP.DBP_LEISTUNGSWERTE.ANLAGENNUMMER = SYSDBP.DBP_AUFTRAEGE.ANLAGENNUMMER AND SYSDBP.DBP_LEISTUNGSWERTE.ANZAHL = SYSDBP.DBP_AUFTRAEGE.DB_REGISTER AND SYSDBP.DBP_AUFTRAEGE.SIGMA_AUFTYP_ID = '50' AND SYSDBP.DBP_AUFTRAEGE.STATUS = 'abgeschlossen') OR SYSDBP.DBP_AUFTRAEGE.AUFTRAGERLEDIGT IS NULL) Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 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-2025 by Thomas Breitkreuz