![]() |
AW: Abfrage in Firebird DB über 6 Tabellen
OK, ihr habt mich geschafft. Ganz durcheinander!
|
AW: Abfrage in Firebird DB über 6 Tabellen
Mir ist zwar nicht klargeworden, was Du genau möchtest, aber eventuell kommt das ja Deinen Vorstellungen näher:
SQL-Code:
SELECT
k.Firmenname, k.KREDITORNR, KP.sdatetime, KP.LISTENPREIS_NETTO, KP.EKPREIS_NETTO, max(KP.sDatetime) as Datum FROM Kreditoren as k join Rel_Kreditor_Artikel KAr on k.ID = KAr.Kreditor_ID join Artikel A on A.ID = KAr.Art_ID join Kreditor_Artikel KA on KA.ID = KAr.Kreditor_Art_ID join Rel_Kred_Art_Preise KAPr on KAPr.Kreditor_Art_ID = KA.ID join Kreditor_Preise KP on KAPr.Kreditor_Preise_ID = KP.ID group by k.FIRMENNAME, k.KREDITORNR, KP.sdatetime, KP.LISTENPREIS_NETTO, KP.EKPREIS_NETTO; |
AW: Abfrage in Firebird DB über 6 Tabellen
Liste der Anhänge anzeigen (Anzahl: 1)
OK, ein Fehler war, das in der Tabelle "Rel_Kred_Art_Preise" die Datensätze für die Zuordnung fehlten.
Jetzt sieht das Ergebnis mit folgender Abfrage so aus: SELECT k.Firmenname, k.KREDITORNR, KP.sdatetime, KP.LISTENPREIS_NETTO, KP.EKPREIS_NETTO FROM Kreditoren as k join Rel_Kreditor_Artikel KAr on k.ID = KAr.Kreditor_ID join Artikel A on A.ID = KAr.Art_ID join Kreditor_Artikel KA on KA.ID = KAr.Kreditor_Art_ID join Rel_Kred_Art_Preise KAPr on KAPr.Kreditor_Art_ID = KA.ID join Kreditor_Preise KP on KAPr.Kreditor_Preise_ID = KP.ID group by k.FIRMENNAME, k.KREDITORNR, KP.sdatetime, KP.LISTENPREIS_NETTO, KP.EKPREIS_NETTO; Ergebnis SQL-Query siehe Anhang |
AW: Abfrage in Firebird DB über 6 Tabellen
Liste der Anhänge anzeigen (Anzahl: 1)
@ nahpets
Das Ergebnis ist (Siehe Anhang) Gewünscht ist NUR Datensatz Nr. 2 und 4 |
AW: Abfrage in Firebird DB über 6 Tabellen
Zitat:
Das 1=1 oder 1=2 nutze ich um die angefragten Felder(Namen) zurück zu bekommen und um ggf. Konstrukte wie
Delphi-Quellcode:
enzusetzen. Ist nur meine pers. Marotte.
sqltxt.Add(' and Feld=wert ';
sqltxt.Add(' and Person.sex=female'; if irgendeinwert then sqltxt.Add(' and Feld2 is not null'; Um die beiden Datensätze mit dem neuesten/jüngsten Datum zu erhalten mußt Du jetzt nur noch Deinen ursprünglichen Ansatz verfolgen:
SQL-Code:
ggf. mußt Du noch die Aliase und das/die Datumsfelder anpassen, aber ich hoffe das Prinzip ist deutlich geworden.
.....
join (select k.id,max(KP.ABDatum) datum FROM Kreditoren as k join Rel_Kreditor_Artikel KAr on k.ID=KAr.Kreditor_ID join Kreditor_Artikel KA on KA.ID=KAr.Kreditor_Art_ID join Rel_Kred_Art_Preise KAPr on KAPr.Kreditor_Art_ID=KA.ID Join Kreditor_Preise KP on KAPr.Kreditor_Preise_ID=KP.ID Group by k.ID ) mindate on (mindate.id=k.id and mindate.datum=kp.sdatetime) Gruß K-H |
AW: Abfrage in Firebird DB über 6 Tabellen
TOP! :thumb: Herzlichen Dank.
Die komplette geglückte Abfrage sieht nun so aus:
Code:
SELECT
k.Firmenname, k.KREDITORNR, mindate.datum, KP.LISTENPREIS_NETTO, KP.EKPREIS_NETTO, KP.RABATTWERT, KP.EKPREIS_NETTO_NETTO FROM Kreditoren as k join Rel_Kreditor_Artikel KAr on k.ID = KAr.Kreditor_ID join Artikel A on A.ID = KAr.Art_ID join Kreditor_Artikel KA on KA.ID = KAr.Kreditor_Art_ID join Rel_Kred_Art_Preise KAPr on KAPr.Kreditor_Art_ID = KA.ID join Kreditor_Preise KP on KAPr.Kreditor_Preise_ID = KP.ID join (select k.id, max(KP.SDATETIME) as datum from Kreditoren as k join Rel_Kreditor_Artikel KAr on k.ID = KAr.Kreditor_ID join Kreditor_Artikel KA on KA.ID = KAr.Kreditor_Art_ID join Rel_Kred_Art_Preise KAPr on KAPr.Kreditor_Art_ID = KA.ID join Kreditor_Preise KP on KAPr.Kreditor_Preise_ID = KP.ID group by k.id ) mindate on mindate.id=k.id and mindate.datum=KP.sdatetime group by k.FIRMENNAME, k.KREDITORNR, mindate.datum, KP.LISTENPREIS_NETTO, KP.EKPREIS_NETTO, KP.RABATTWERT, KP.EKPREIS_NETTO_NETTO; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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