![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDac
Firebird FIRST mit JOIN
Ich habe eine Datenbankabfrage erstellt, in der zu den Master-Datensätzen die entsprechenden Detail-Datensätze zurück gegeben werden. Jetzt möchte ich die Anzahl der zurückgegebenen Datensätze limitieren und habe dafür FIRST 10 genutzt. Funktioniert auch technisch wie es soll.
Meine Frage: Kann ich die Abfrage so anpassen, dass mir die ersten 10 Master-Datensätze + alle Detail-Datensätze zurück gegeben werden, also z.B. 20 Datensätze, wenn es zu jedem Master-Datensatz zwei Detail-Datensätze gibt. Ist so was möglich?
Code:
SELECT FIRST 10 a.Nr, b.Bez, b.Menge FROM a LEFT JOIN b ON b.Nr = a.Nr
|
AW: Firebird FIRST mit JOIN
Aus dem Kopf ...
Code:
SELECT a.Nr, b.Bez, b.Menge FROM a LEFT JOIN b ON b.Nr = a.Nr
WHERE ( a.Nr in (SELECT FIRST 10 aa.Nr FROM a aa) ) |
AW: Firebird FIRST mit JOIN
So müsste es gehen:
Code:
SELECT
master10.*, detail.* FROM ( SELECT FIRST 10 master.felder FROM master WHERE bedingung ) as master10 JOIN detail on detail.master_id = master10.id WHERE bedingung |
AW: Firebird FIRST mit JOIN
also ein FIRST ohne ein ORDER BY ist keine Gute Idee da kommt nach jeder kleinen Änderung an der DB was anderes dabei raus
Delphi-Quellcode:
SELECT
master10.*, detail.* FROM ( SELECT FIRST 10 master.felder FROM master WHERE bedingung ORDER BY irgendwas <----- ) as master10 JOIN detail on detail.master_id = master10.id WHERE bedingung |
AW: Firebird FIRST mit JOIN
Super Jungs, Danke, funktioniert.
@ConnorMcLeod: funktioniert, dauert aber 6 Min. @Neutral General: funktioniert, selbes Ergebnis in 0.045 Sek. @hstreicher: ORDER BY hab ich drin, brauche ich |
AW: Firebird FIRST mit JOIN
Danke für die Rückmeldung - gut zu wissen ;-)
|
AW: Firebird FIRST mit JOIN
Ja, liegt vielleicht aber auch an einem fehlenden Index in der Kombination.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:36 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