Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ibSQL. gibts den befehl LIMIT wie in mySql ?????? (https://www.delphipraxis.net/66515-ibsql-gibts-den-befehl-limit-wie-mysql.html)

mojo777 30. Mär 2006 17:10

Datenbank: ib6 • Version: 6 • Zugriff über: sql

ibSQL. gibts den befehl LIMIT wie in mySql ??????
 
Hallo,
ich suche nach einer möglichkeit einen Datensatz anzuzeigen, und zwar nur einen, wo aber die suchkriterien nicht bekannt sind.

situation:
ich habe eine tabelle "PRODUKTE"
und dann habe ich eine Tabelle "LIEFERUNGEN"
nun suche ich nach der letzten lieferung von diesem produkt

wie macht ihr sowas?
ist sicherlich kein weltneues problem.. :-P
ich habs bisher immer über delphi gelöst. aber das stinkt mir langsam zu sehr. ab 10000 einträge wird das sehr lahm... :-(

wollte schon eine stored procedure schreiben, aber gerade hänge ich am problem mit "limit" kenne nichts aus SQL, was dem aus mysql entsprechen würde. :-(

bitte helft!

gruß

m

mojo777 30. Mär 2006 17:18

Re: ibSQL. gibts den befehl LIMIT wie in mySql ??????
 
naja.. geht auch anders...
hab ich gerade gesehen.

SQL-Code:
SELECT P.P_BEZ, P.P_PREIS,
  (SELECT MAX(L.LIN_DATUM)
  FROM lieferungen L
  where L.LIN_PROD=P.P_ID)
  AS LAST_LIEF
FROM PRODUKTE P
gruß

Jelly 30. Mär 2006 21:31

Re: ibSQL. gibts den befehl LIMIT wie in mySql ??????
 
Prinzipiell solltest Du Dir überlegen, dass es von vornherein keinen Sinn macht, dem Benutzer 10000 Records zu liefern. Ob das in einem Stück oder über mehrere Seiten mittels limit passiert, denn kein Mensch wird die 10000 Records manuell durchlaufen um den entsprechenden Record zu finden. Überleg Dir stattdessen liebe, wie Du deine Suchfunktion verfeinern kannst, damit die Gesamtergebnismeng überschaubar bleibt, z.B. durch Eingrenzung innerhalb eines Zeitraums. Kriterien dazu findest Du meist in deiner Datenbank selbst.

Hansa 31. Mär 2006 01:09

Re: ibSQL. gibts den befehl LIMIT wie in mySql ??????
 
Zitat:

Zitat von mojo777
..situation:
ich habe eine tabelle "PRODUKTE"
und dann habe ich eine Tabelle "LIEFERUNGEN"
nun suche ich nach der letzten lieferung von diesem produkt

wollte schon eine stored procedure schreiben, aber gerade hänge ich am problem mit "limit" kenne nichts aus SQL, was dem aus mysql entsprechen würde. :-(

Die SP ist doch der richtige Weg, also schreibe sie. Um die Ergebnismenge einzugrenzen, z.B. so :

SQL-Code:
BEGIN
  SELECT FIRST 1 VP,ABDATUM FROM PREIS P WHERE
    (ID_ART = :ID_ART) AND (ID_KUNDE = :ID_KUNDE) AND (ABDATUM <= :ABDATUM)
  ORDER BY ABDATUM DESC INTO :PREIS,:ABDATUM_OUT;
  SUSPEND;
END
Ist als Beispiel für die Suche nach neuestem Preis eines Artikels für einen Kunden anzusehen. :???: Sehe allerdings gerade noch : IB6 ? Beispiel bezieht sich auf FB 1.5. IMHO gehts so mit IB 6 nicht, aber Du weißt sicherlich, daß Firebird 1.0 der Nachfolger davon ist oder doch nicht :?: Es geht jedenfalls um das FIRST und richtiges ORDER BY.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz